Vairāk
Kā Git sistēmā pilnībā aizstāt galveno zaru no cita zara?
Varbūtējs dublikāts:
Padarīt pašreizējo Git zaru par galveno zaru
Man Git repozitorijā ir divas filiāles:
master
seotweaks
(sākotnēji izveidota nomaster
)
Es izveidoju seotweaks
ar nolūku to ātri apvienot atpakaļ master
. Tomēr tas notika pirms trim mēnešiem, un kods šajā atzarā ir par 13 versijām priekšā master
.
Tā faktiski ir kļuvusi par mūsu galveno darba zaru, jo viss master
kods tagad ir vairāk vai mazāk novecojis.
Ļoti slikta prakse, es zinu, mācība apgūta.
Vai jūs zināt, kā es varu aizstāt visu master
filiāles saturu ar seotweaks
filiāles saturu?
Es varētu vienkārši izdzēst visu, kas atrodas master
, un apvienot, bet man tas nešķiet labākā prakse.
1540
3
Jums vajadzētu būt iespējai izmantot "mūsu" apvienot stratēģiju, lai pārrakstītu master ar seotweaks, piemēram, šo:
Rezultātā jūsu master tagad būtībā ir seotweaks.
(
-s mūsu
ir saīsinājums no--stratēģija=mūsu
).No dokumentiem par stratēģiju 'ours':
Tas atrisina jebkuru zaru galvu skaitu, bet apvienošanas rezultātā iegūtais koks vienmēr ir pašreizējās zara galvas koks, efektīvi ignorējot visas izmaiņas no visiem pārējiem zariem. To paredzēts izmantot, lai aizstātu sānu zaru veco attīstības vēsturi. Ņemiet vērā, ka tas atšķiras no rekursīvās apvienošanas stratēģijas opcijas -Xours.
Atjauninājums no komentāriem: Ja saņemat fatālu rezultātu:
atsaka apvienot nesaistītas vēstures
, tad mainiet otro rindu uz šādu: gitmerge --allow-unrelated-histories -s ours master
Ko darīt, izmantojot git branch -m, lai pārdēvētu master atzaru par citu, un pēc tam pārdēvēt seotweaks atzaru par master? Kaut kā šādi:
Tas var dzēst oriģinālajā master esošās izmaiņas, lūdzu, pārbaudiet savu oriģinālo master pirms
git push -f origin master
.Jūs varat pārdēvēt/pārcelt master uz attālināto, bet tas radīs problēmas, ja daudzi cilvēki ir balstījuši savu darbu uz attālināto master atzaru un ir ievilkuši šo atzaru savā lokālajā repo.
Šajā gadījumā tā varētu nebūt, jo šķiet, ka visi strādā ar zaru '
seotweaks
'.Tādā gadījumā jūs varat:
git remote --show var nedarboties. (Veiciet
git remote show
, lai pārbaudītu, kā jūsu tālvadība ir deklarēta jūsu lokālajā repā. Es pieņemu 'origin
')(Attiecībā uz GitHub, house9 komentārs: "Man bija jāveic vēl viens papildu solis, GitHub nospiežot '
Admin
' pogu un iestatot 'Default Branch
' uz kaut ko citu, nevis 'master
', pēc tam pēc tam atkal to ievietot atpakaļ"))Bet atkal: