Другой вопрос сказал git pull
, как git fetch
+git merge
.
Но в чем разница между git pull
VS git fetch
+ git rebase
?
git
git-rebase
git-pull
git-fetch
Майкл
источник
источник
Ответы:
Из вашего вопроса должно быть совершенно очевидно, что вы на самом деле просто спрашиваете о разнице между
git merge
иgit rebase
.Итак, давайте предположим, что вы находитесь в общем случае - вы проделали некоторую работу над вашей основной веткой, и вы извлекли из исходного, который также проделал некоторую работу. После получения вещи выглядят так:
Если вы объединитесь в этот момент (поведение git pull по умолчанию), предполагая, что нет никаких конфликтов, вы получите следующее:
Если, с другой стороны, вы сделали соответствующую перебазировку, вы бы получили следующее:
Содержимое вашего рабочего дерева должно быть одинаковым в обоих случаях; Вы только что создали другую историю, ведущую к этому . Перебазирование переписывает вашу историю, создавая впечатление, что вы зафиксировали поверх новой главной ветки origin (
R
), а не там, где вы изначально фиксировали (H
). Вы никогда не должны использовать подход rebase, если кто-то уже извлек из вашей основной ветки.Наконец, обратите внимание, что вы можете настроить
git pull
для данной ветви использование rebase вместо слияния, установив для параметра configbranch.<name>.rebase
значение true. Вы также можете сделать это за одно нажатиеgit pull --rebase
.источник
TLDR:
git pull
как бегатьgit fetch
тоgit merge
git pull --rebase
какgit fetch
потомgit rebase
В ответ на ваше первое заявление,
git pull
это какgit fetch
+git merge
.(Ссылка: https://git-scm.com/docs/git-pull )
Для вашего второго утверждения / вопроса:
«Но в чем разница между
git pull
VSgit fetch
+git rebase
»Опять же из того же источника:
git pull --rebase
Теперь, если вы хотели спросить
'разница между
merge
иrebase
»здесь тоже есть ответ:
https://git-scm.com/book/en/v2/Git-Branching-Rebasing
(разница между изменением способа записи истории версий)
источник
git fetch + git rebase
команды теперь работают. На нашем