Inną kwestią powiedział git pull
jest jak git fetch
+ git merge
.
Ale jaka jest różnica między git pull
VS git fetch
+ git rebase
?
git
git-rebase
git-pull
git-fetch
Michał
źródło
źródło
Odpowiedzi:
Z twojego pytania powinno być całkiem oczywiste, że w rzeczywistości pytasz tylko o różnicę między
git merge
igit rebase
.Załóżmy, że jesteś w typowym przypadku - wykonałeś trochę pracy nad gałęzią master i wyciągnąłeś z źródła, który również wykonał trochę pracy. Po pobraniu rzeczy wyglądają tak:
Jeśli scalisz w tym momencie (domyślne zachowanie git pull), zakładając, że nie ma żadnych konfliktów, kończysz się tak:
Z drugiej strony, jeśli zrobiłeś odpowiedni rebase, skończyłbyś z tym:
W obu przypadkach zawartość twojego drzewa pracy powinna być taka sama; właśnie stworzyłeś inną historię, która do tego doprowadziła . Rebase przepisuje twoją historię, sprawiając, że wygląda ona tak, jakbyś popełnił na nowej gałęzi master (
R
) pierwotnego źródła , zamiast w miejscu, w którym pierwotnie popełniłeś (H
). Nigdy nie powinieneś używać metody rebase, jeśli ktoś inny wyciągnął już z twojej gałęzi master.Na koniec zauważ, że możesz faktycznie skonfigurować
git pull
dla danej gałęzi użycie rebase zamiast scalania, ustawiając parametr configbranch.<name>.rebase
na true. Możesz to również zrobić dla pojedynczego pociągnięcia za pomocągit pull --rebase
.źródło
TLDR:
git pull
jest jak bieganiegit fetch
wtedygit merge
git pull --rebase
jest jakgit fetch
wtedygit rebase
W odpowiedzi na twoje pierwsze oświadczenie
git pull
jest jakgit fetch
+git merge
.(Patrz: https://git-scm.com/docs/git-pull )
W przypadku drugiego oświadczenia / pytania:
„Ale jaka jest różnica między
git pull
VSgit fetch
+git rebase
”Ponownie z tego samego źródła:
git pull --rebase
Teraz, jeśli chcesz zapytać
„różnica między
merge
arebase
”na to również tutaj odpowiedziano:
https://git-scm.com/book/en/v2/Git-Branching-Rebasing
(różnica między zmianą sposobu rejestrowania historii wersji)
źródło
git fetch + git rebase
działają polecenia. Od teraz nie ma już mniej lub więcej konfliktów na naszym drzewie git :)