git pull VS git fetch Git rebase

Kolejne pytanie powiedziane {[0] } jest jak git fetch + git merge.

Ale jaka jest różnica między git pull a git fetch + git rebase?

Author: Community, 2010-07-29

2 answers

Powinno być dość oczywiste z twojego pytania, że właściwie pytasz o różnicę między git merge i git rebase.

Załóżmy więc, że jesteś w zwykłym przypadku - wykonałeś trochę pracy na swojej gałęzi master i wyciągnąłeś z origin, które również wykonało pewną pracę. Po aportowaniu rzeczy wyglądają tak:

- o - o - o - H - A - B - C (master)
               \
                P - Q - R (origin/master)

Jeśli połączysz się w tym momencie (domyślne zachowanie git pull), zakładając, że nie ma żadnych konfliktów, skończysz z to:

- o - o - o - H - A - B - C - X (master)
               \             /
                P - Q - R --- (origin/master)

Jeśli z drugiej strony wykonasz odpowiednią rebase, skończysz z tym:

- o - o - o - H - P - Q - R - A' - B' - C' (master)
                          |
                          (origin/master)

Zawartość Twojego drzewa pracy powinna skończyć się taka sama w obu przypadkach; właśnie stworzyłeś inną historię prowadzącą do niej . Rebase przepisuje Twoją historię, sprawiając, że wygląda ona tak, jakby popełniono ją na nowej gałęzi master origin (R), zamiast miejsca, w którym pierwotnie popełniono (H). Nigdy nie należy stosować metody rebase, jeśli ktoś inny ma już wyciągnąłem z Twojej gałęzi.

Na koniec zauważ, że możesz skonfigurować git pull dla danej gałęzi, aby używała rebase zamiast merge, ustawiając parametr konfiguracyjny branch.<name>.rebase na true. Można to również zrobić dla pojedynczego pociągnięcia za pomocą git pull --rebase.

 309
Author: Cascabel,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-02-19 11:04:40

W odpowiedzi na twoje pierwsze polecenie ' git pull jest jak Git fetch + Git merge.',

"w domyślnym trybie, git pull jest skrótem od git fetch, a następnie git merge FETCH_HEAD " dokładniej, git pull uruchamia git fetch z podane parametry i wywołania Git merge do scalenia pobranej gałęzi głowy do bieżącej gałęzi "

(Ref: https://git-scm.com/docs/git-pull )


Za drugie stwierdzenie/pytanie: ' ale co jest różnicą pomiędzy git pull a git fetch+Git rebase ' Znowu z tego samego źródła:

"z opcją -- rebase, uruchamia git rebase zamiast Git merge."


Jeśli chcesz zapytać o różnicę między fetch i merge, tutaj też znajdziesz odpowiedź: https://git-scm.com/book/en/v2/Git-Branching-Rebasing (różnica między zmianą sposobu zapisu historii wersji a tym, co nie)

 -1
Author: harshvchawla,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-06-12 04:52:31