2016-03-22 19 views
6

Jestem noobem w Git i próbuję poznać różnicę między git pull a git rebase. Czy ktoś może podać przykład, kiedy użyć tej opcji, ponieważ uważam, że oba służą temu samemu celowi.Git Pull kontra Git Rebase

+0

Czy próbowałeś przeczytać dokumentację? Spoiler: nie służą temu samemu celowi. –

+0

Przeczytałem dokumentację. Tak jak powiedziałem, że jestem noobem i zacząłem się uczyć. – user4943236

+0

@TimCastelijns widzisz odpowiedź Petera. Wyraźnie stwierdził, że są one ze sobą ściśle powiązane, a zatem powstało zamieszanie i dlatego wysłałem pytanie. Czy możesz usunąć downvote – user4943236

Odpowiedz

8

git-pull - Pobiera od i zintegrować z innym repozytorium lub lokalnym oddziale GIT PULL

Zasadniczo wyciągają zdalnego oddziału lokalnego, przykładowo:

git pull origin master 

pociągnie master branch do lokalnego repozytorium

git-rebase - Naprzód-port lokalny potwierdzenie do zaktualizowanego upstream głowy GIT REBASE

Ten jest wprowadzenie lokalnych zmian na szczycie zmian zdalnie przez innych użytkowników. Na przykład:

  • popełniłeś jakieś zmiany na lokalnym oddziale na przykład o nazwie SOME-FEATURE
  • Twój przyjaciel w międzyczasie pracował nad innymi funkcjami i połączył swój oddział do pana

teraz chcesz zobaczyć jego i twoje zmiany w lokalnym oddziale. Więc ty kasa master Branża:

git checkout master 

następnie można wyciągnąć:

git pull origin master 

a następnie udać się do oddziału:

git checkout SOME-FEATURE 

i można zrobić rebase master dostać ostatnie zmiany i umieścić na niej swój oddział:

git rebase master 

Mam nadzieję, że teraz jest dla ciebie bardziej zrozumiałe.

12

git pull i git rebase nie są wymienne, ale są ze sobą ściśle połączone.

git pull pobiera najnowsze zmiany w aktualnej gałęzi od pilota i stosuje te zmiany do lokalnej kopii oddziału. Zwykle odbywa się to poprzez łączenie, tj. Lokalne zmiany są łączone w zdalne zmiany. Tak więc git pull jest podobna do git fetch & git merge.

Rebasing to alternatywa dla łączenia. Zamiast tworzenia nowego zatwierdzenia, które łączy dwie gałęzie, przenosi zatwierdzenia jednej z gałęzi na drugą.

Możesz ciągnąć za pomocą rebase zamiast scalania (git pull --rebase). Zmiany lokalne, które wprowadziłeś, zostaną ponownie utworzone na podstawie zdalnych zmian, zamiast być scalone ze zdalnymi zmianami.

Atlassian jako niektóre doskonałe documentation on merging vs. rebasing.