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.
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.
Odpowiedzi:
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.
Atlassian ma doskonałą dokumentację dotyczącą scalania i ponownego bazowania .
git-pull - Pobierz z innego repozytorium lub lokalnego oddziału GIT PULL i zintegruj się z nim
Zasadniczo ściągasz zdalny oddział do lokalnego, na przykład:
git pull origin master
Ściągnie gałąź główną do twojego lokalnego repozytorium
git-rebase - lokalne zatwierdzenie portu do przodu do zaktualizowanego nagłówka GIT REBASE
Ten polega na umieszczaniu lokalnych zmian na wierzchu zmian wprowadzonych zdalnie przez innych użytkowników. Na przykład:
SOME-FEATURETeraz chcesz zobaczyć jego i swoje zmiany w lokalnym oddziale. Więc masteroddziału kasy :
git checkout master
wtedy możesz wyciągnąć:
git pull origin master
a potem idziesz do swojego oddziału:
git checkout SOME-FEATURE
i możesz zrobić rebase, masteraby uzyskać z niego najnowsze zmiany i umieścić zatwierdzenia gałęzi na górze:
git rebase master
Mam nadzieję, że teraz jest to dla ciebie bardziej jasne.
git fetchwtedy git 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.