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
?
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
.
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)
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