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