Jestem noob w Git i próbuje dowiedzieć się różnicę między git pullvs git rebase. Czy ktoś może podać przykład, kiedy użyć której opcji, skoro czuję, że obie służą temu samemu celowi.
Tak. Różnica między pull i rebase polega na tym, że pull powoduje scalenie. Więc odpowiedź na twoje pytanie znajduje się pod linkiem, który wkleiłem.
Thibault D.
1
@ user4943236 1) nawet nie wiesz, kto zlekceważył twoje pytanie, nie oskarżaj ludzi bez powodu 2) gdyby to był mój głos przeciw, nie usunąłbym go tylko dlatego, że tak łatwo jest znaleźć odpowiedź, czytając dokumentacja
git pulli git rebasenie są wymienne, ale są ze sobą ściśle powiązane.
git pullpobiera najnowsze zmiany bieżącej gałęzi ze zdalnego i stosuje te zmiany do lokalnej kopii oddziału. Zwykle odbywa się to przez scalanie, tj. Zmiany lokalne są łączone ze zmianami zdalnymi. Więc git pulljest podobny do git fetch & git merge.
Rebasing jest alternatywą dla scalania. Zamiast tworzyć nowe zatwierdzenie, które łączy dwie gałęzie, przenosi zatwierdzenia jednej z gałęzi na drugą.
Możesz ściągać używając rebase zamiast merge ( git pull --rebase). Lokalne zmiany, które wprowadziłeś, zostaną ponownie oparte na zdalnych zmianach, a nie scalone ze zdalnymi zmianami.
Nie musisz kupować mistrza. Zostań na swojej gałęzi i zrób: git fetchwtedy git rebase origin/master.
Antoine Martin,
Sprawdzając lokalny wzorzec, a następnie wyciągając wzorzec pochodzenia, zaktualizuje również twój lokalny wzorzec. Jest to jedna z najlepszych praktyk, które należy zastosować
Ashwani
20
W skrócie :
-> Git Merge: Po prostu połączy twoje i zdalne zmiany, a to utworzy kolejny rekord historii zatwierdzeń
-> Git Rebase: Przedkłada twoje zmiany ponad wszystkie nowe zdalne zmiany i przepisuje historię zatwierdzeń, więc twoja historia zmian będzie znacznie czystsza niż git merge. Rebase to destrukcyjna operacja. Oznacza to, że jeśli nie zastosujesz go poprawnie, możesz stracić wykonaną pracę i / lub złamać spójność repozytoriów innych programistów.
Odpowiedzi:
git pull
igit rebase
nie są wymienne, ale są ze sobą ściśle powiązane.git pull
pobiera najnowsze zmiany bieżącej gałęzi ze zdalnego i stosuje te zmiany do lokalnej kopii oddziału. Zwykle odbywa się to przez scalanie, tj. Zmiany lokalne są łączone ze zmianami zdalnymi. Więcgit pull
jest podobny dogit fetch & git merge
.Rebasing jest alternatywą dla scalania. Zamiast tworzyć nowe zatwierdzenie, które łączy dwie gałęzie, przenosi zatwierdzenia jednej z gałęzi na drugą.
Możesz ściągać używając rebase zamiast merge (
git pull --rebase
). Lokalne zmiany, które wprowadziłeś, zostaną ponownie oparte na zdalnych zmianach, a nie scalone ze zdalnymi zmianami.Atlassian ma doskonałą dokumentację dotyczącą scalania i ponownego bazowania .
źródło
Zasadniczo ściągasz zdalny oddział do lokalnego, na przykład:
Ściągnie gałąź główną do twojego lokalnego repozytorium
Ten polega na umieszczaniu lokalnych zmian na wierzchu zmian wprowadzonych zdalnie przez innych użytkowników. Na przykład:
SOME-FEATURE
Teraz chcesz zobaczyć jego i swoje zmiany w lokalnym oddziale. Więc
master
oddziału kasy :wtedy możesz wyciągnąć:
a potem idziesz do swojego oddziału:
i możesz zrobić rebase,
master
aby uzyskać z niego najnowsze zmiany i umieścić zatwierdzenia gałęzi na górze:Mam nadzieję, że teraz jest to dla ciebie bardziej jasne.
źródło
git fetch
wtedygit rebase origin/master
.W skrócie :
-> Git Merge: Po prostu połączy twoje i zdalne zmiany, a to utworzy kolejny rekord historii zatwierdzeń
-> Git Rebase: Przedkłada twoje zmiany ponad wszystkie nowe zdalne zmiany i przepisuje historię zatwierdzeń, więc twoja historia zmian będzie znacznie czystsza niż git merge. Rebase to destrukcyjna operacja. Oznacza to, że jeśli nie zastosujesz go poprawnie, możesz stracić wykonaną pracę i / lub złamać spójność repozytoriów innych programistów.
źródło