Mam lokalny oddział projektu („configUpdate”), który rozwidliłem z projektu innej osoby i wprowadziłem wiele zmian w nim i chciałbym scalić zmiany, które wprowadzili w moim lokalnym oddziale.
próbowałem
git pull --rebase origin configUpdate
ale nie uchwycił najnowszych zmian - jak połączyć te dwa elementy? (także dla punktów bonusowych, co zrobiłem z pull --rebase
poleceniem?)
Odpowiedzi:
Z gałęzi funkcji (np.
configUpdate
) Uruchom:Lub krótsza forma:
Dlaczego to działa:
git merge branchname
pobiera nowe zatwierdzenia z oddziałubranchname
i dodaje je do bieżącego oddziału. W razie potrzeby automatycznie dodaje górne zatwierdzenie „Scal”.git rebase branchname
pobiera nowe zatwierdzenia z oddziałubranchname
i wstawia je „pod” zmianami. Dokładniej, modyfikuje historię bieżącej gałęzi, tak aby opierała się na wskazówcebranchname
, a wszelkie zmiany, które wprowadziłeś, były na jej podstawie.git pull
jest w zasadzie taki sam jakgit fetch; git merge origin/master
.git pull --rebase
jest w zasadzie taki sam jakgit fetch; git rebase origin/master
.Dlaczego więc chcesz użyć
git pull --rebase
zamiastgit pull
? Oto prosty przykład:Zaczynasz pracować nad nową funkcją.
Zanim będziesz gotowy do wprowadzenia zmian, inni deweloperzy wypchnęli kilka zatwierdzeń.
Jeśli ty
git pull
(który używa scalania), twoje zmiany zostaną pochowane przez nowe zatwierdzenia, oprócz automatycznie utworzonego zatwierdzenia scalania.Jeśli
git pull --rebase
zamiast tego, git szybko prześle twojego mistrza do upstream, a następnie zastosuj zmiany na górze.źródło
Dowiedziałem się, że to:
źródło
pull --rebase
nie działałeś, ponieważorigin
wskazywał na twój widelec. Gdybyś to zrobił, zadziałałobygit pull --rebase upstream/master
.Przejdź do lokalnego oddziału
Scal zdalne urządzenie nadrzędne z oddziałem
W przypadku jakichkolwiek konfliktów popraw je i dla każdego konfliktu pliku wykonaj polecenie
Kontynuuj rebase
źródło
git rebase nie działał dla mnie. Po uruchomieniu git rebase, gdy próbuję wypchnąć zmiany do mojego lokalnego oddziału, ciągle pojawia się błąd („wskazówka: Aktualizacje zostały odrzucone, ponieważ końcówka twojego obecnego oddziału znajduje się za jego zdalnym odpowiednikiem. Zintegruj zdalne zmiany (np.„ Git pull). .. ') przed ponownym pchnięciem. ") nawet po ściągnięciu gita. To, co w końcu zadziałało, to git merge.
Jeśli jesteś początkujący jak ja, oto dobry artykuł na temat git merge vs. git rebase. https://www.atlassian.com/git/tutorials/merging-vs-rebasing
źródło