Git pull VS git fetch git rebase

Другой вопрос сказал, что git pull похож на git fetch + git merge.

Но в чем разница между git pull VS git fetch + git rebase?

253
задан michael 28 июля '10 в 23:16
источник поделиться

2 ответов

Из вашего вопроса должно быть довольно очевидно, что вы просто спрашиваете о различии между 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.

283
ответ дан Jefromi 28 июля '10 в 23:23
источник поделиться

В ответ на ваш первый оператор 'git pull похож на git fetch + git merge.',

"В режиме по умолчанию git pull является сокращением для git fetch, за которым следует git merge FETCH_HEAD" Точнее, git тянет работает git fetch с помощью заданные параметры и вызовы git merge, чтобы объединить извлеченную ветвь голова в текущую ветвь "

(Ссылка: https://git-scm.com/docs/git-pull)


Для вашего второго заявления/вопроса: "Но в чем разница между git pull VS git fetch + git rebase ' Опять же, из того же источника:

"С помощью --rebase выполняется git rebase вместо git merge."


Теперь, если вы хотите спросить разницу между выборкой и слиянием, на это тоже ответят: https://git-scm.com/book/en/v2/Git-Branching-Rebasing (разница между изменением истории версий истории и тем, что нет)

0
ответ дан harshvchawla 12 июня '17 в 7:52
источник поделиться

Другие вопросы по меткам