GIT Zastąp gałąź master

33

Mam starą gałąź programistów, która jest całkowicie nieaktualna. Nie chcę go usuwać, ale chcę całkowicie zastąpić jego zawartość gałęzią master. Czyli chcę dev_branch = master

Próbowałem:

git merge -s ours dev_branch

Nie działało jednak ...

Cornwell
źródło

Odpowiedzi:

55

Jeśli chcesz wszystkie zmiany od masterwewnątrz dev_branch, to:

git checkout dev_branch
git reset --hard master

Działa to tylko wtedy, gdy inne osoby nie sklonowały repozytorium.

Jeśli masz już dev_branchprzekazane do pilota, musisz wykonać:

git push --force

Aby wymusić naciśnięcie na pilocie. Ostrzeżenie: To złamie historię oddziału dla osób, które go wcześniej sklonowały! Następnie, inni ludzie będą musieli zrobić git pull --rebasena dev_branchdostać zmiany.


Możesz także zmienić nazwę gałęzi programisty na coś starego, a następnie utworzyć nową gałąź mastero tej samej nazwie:

git branch -m dev_branch old_dev_branch
git branch -m master dev_branch

Lub skorzystaj ze oursstrategii - nie wiesz, dlaczego to nie zadziała:

git checkout master
git merge -s ours dev_branch
git checkout dev_branch
git merge master
slhck
źródło
Wydaje mi się, że dzięki rozwiązaniu zmieniającemu nazwę nie możesz teraz naciskać dev_branchna pochodzenie (jeśli takowe istniało), a także nie będziesz już mieć masterlokalnego oddziału.
aidan
Dzięki @slhck! Z jakiegoś powodu moja gałąź etapu nie była aktualizowana po normalnym scaleniu. Powtarzał, że moja gałąź sceniczna jest aktualna. Użycie strategii „naszej” rozwiązało to dla mnie.
Zręczny Shinobi,
nasz miałby wpływ tylko na sporne fragmenty, ale on chce całkowicie odnowić gałąź, nie tylko konflikty! (przynajmniej tak muszę zrobić i dlaczego znalazłem to pytanie) - Pójdę po nazwę!
Martin Meeser