Hvordan erstatte master-grenen i Git helt og holdent fra en annen gren?
Mulig duplikat:
Jeg har to grener i Git-arkivet mitt:
master
.seotweaks
(opprinnelig opprettet framaster
)
Jeg opprettet seotweaks
med den hensikt å raskt flette den tilbake til master
. Det er imidlertid tre måneder siden, og koden i denne grenen ligger 13 versjoner foran master
.
Den har i praksis blitt vår fungerende master-gren, ettersom all koden i master
er mer eller mindre foreldet nå.
Veldig dårlig praksis, jeg vet det, men jeg har lært av det.
Vet du hvordan jeg kan erstatte alt innholdet i master
-grenen med innholdet i seotweaks
?
Jeg kunne bare slette alt i master
og slå sammen, men dette føles ikke som beste praksis.
1540
3
Du bør kunne bruke "vår" flettestrategi for å overskrive master med seotweaks som dette:
Resultatet bør være at masteren din nå i hovedsak er seotweaks.
(
-s our
er en forkortelse for--strategy=ours
).Fra the docs om 'ours' strategien:
Oppdatering fra kommentarer: Hvis du får fatal:
refusing to merge unrelated histories
, så endre den andre linjen til denne: gitmerge --allow-unrelated-histories -s ours master
.Hva med å bruke git branch -m for å omdøpe master-grenen til en annen, og deretter omdøpe seotweaks-grenen til master? Noe sånt som dette:
Dette kan fjerne commits i origin master, vennligst sjekk origin master før du kjører
git push -f origin master
.Du kan gi nytt navn til/fjerne master på remote, men dette vil være et problem hvis mange har basert arbeidet sitt på den eksterne master-grenen og har hentet den inn i sitt lokale repo.
Det er kanskje ikke tilfelle her, siden alle ser ut til å jobbe på grenen '
seotweaks
'.I så fall kan du gjøre det:
git remote --show fungerer kanskje ikke. (Gjør en `
git remote show
for å sjekke hvordan din remote er deklarert i ditt lokale repo. Jeg vil anta 'origin
')(Når det gjelder GitHub, house9 kommenterer: "Jeg måtte gjøre ett ekstra trinn, klikke på '
Admin
' -knappen på GitHub og sette 'Default Branch
' til noe annet enn 'master
', og deretter sette den tilbake etterpå")Men igjen:
reset --hard
sin lokale master til remote/master-grenen de vil hente, og glemme sin nåværende master.