Другой вопрос сказал, что git pull похож на git fetch + git merge.
Но в чем разница между git pull VS git fetch + git rebase?
Другой вопрос сказал, что git pull похож на git fetch + git merge.
Но в чем разница между git pull VS 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)
Содержимое вашего рабочего дерева должно быть одинаковым в обоих случаях; вы только что создали другую историю, ведущую к ней. Базовая перезапись перезаписывает вашу историю, заставляя ее выглядеть так, как если бы вы перенесли новую начальную ветвь оригинала (R) вместо того, где вы первоначально взяли (H). Вы никогда не должны использовать метод переадресации, если кто-то еще вытащил из вашей основной ветки.
Наконец, обратите внимание, что вы можете настроить git pull для данной ветки для использования rebase вместо merge, установив параметр конфигурации 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 git fetch + git rebase "
Опять же из того же источника: git pull --rebase
"С --rebase он запускает git rebase вместо git merge".
"разница между merge и rebase "
здесь тоже есть ответ:
https://git-scm.com/book/en/v2/Git-Branching-Rebasing
(разница между изменением способа записи истории версий)