Zaktualizuj przestarzałą gałąź względem mastera w repozytorium Git

124

Mam repozytorium Git, które ma gałąź (lokalną i zdalną), która stała się nieaktualna. Chciałbym zaktualizować tę gałąź z gałęzią główną, ale nie wiem, jak to zrobić. Prawdopodobnie będzie też wiele konfliktów podczas łączenia.

Jak mogę przenieść lub zaktualizować ten nieaktualny oddział do tego samego stanu, co oddział główny?

Andrzej
źródło
1
jeśli przyszedłeś tutaj, aby dowiedzieć się, jak zaktualizować przestarzałą gałąź względem mastera w repozytorium Git, jeśli nie wprowadziłeś żadnych zmian w lokalnym oddziale, po prostu zrób "git pull"
obskurny

Odpowiedzi:

152

Zaktualizuj gałąź główną, co musisz zrobić niezależnie.

Następnie jeden z:

  1. Przywróć starą gałąź do gałęzi głównej. Rozwiąż konflikty scalania podczas rebase, a wynikiem będzie aktualna gałąź, która bezproblemowo łączy się z wzorcem.

  2. Połącz swoją gałąź w master i rozwiąż konflikty scalania.

  3. Połącz mistrza ze swoją gałęzią i rozwiąż konflikty scalania. Następnie scalanie z twojej gałęzi do mastera powinno być czyste.

Żaden z nich nie jest lepszy od drugiego, po prostu mają różne wzorce kompromisów.

Użyłbym podejścia rebase, które moim zdaniem daje czystsze ogólne wyniki późniejszym czytelnikom, ale to nic poza osobistym gustem.

Aby zmienić bazę i zachować oddział, należy:

git checkout <branch> && git rebase <target>

W twoim przypadku sprawdź więc starą gałąź

git rebase master 

aby go odbudować przeciwko panu.

Daniel Pittman
źródło
1
@Andrew: git rebase:)
CharlesB
1
git checkout $branch && git rebase $target- w twoim przypadku sprawdź starą gałąź, a następnie git rebase masterodbuduj ją przeciwko mistrzowi.
Daniel Pittman
3
Czy Twoje repozytorium jest publiczne? Czy można zmienić bazę, jeśli jest publiczna?
event_jr
4
Dobra rada przy używaniu rebase w zdalnych gałęziach: rób to zdalne odnowienie w gałęzi głównej tylko wtedy, gdy nikt nie wypycha zatwierdzeń w tej zdalnej gałęzi.
Dherik
Po zakończeniu ponownego bazowania należy wprowadzić zmiany za pomocą -fopcji. Kiedy przepisujesz historię, wymagany jest silny nacisk.
Opster Elasticsearch Ninja,