git pull VS git fetch git rebase

Другой вопрос сказал git pull это как git fetch + git merge,

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

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)

Содержимое вашего рабочего дерева должно быть одинаковым в обоих случаях; Вы только что создали другую историю, ведущую к этому. Перебазирование переписывает вашу историю, создавая впечатление, что вы сделали коммит поверх новой главной ветки origin (R) вместо того, где вы изначально совершили (H). Вы никогда не должны использовать подход rebase, если кто-то уже извлек из вашей основной ветки.

Наконец, обратите внимание, что вы можете настроить git pull для данной ветви использовать rebase вместо слияния, установив параметр config branch.<name>.rebase к истине. Вы также можете сделать это за одно нажатие, используя git pull --rebase,

В ответ на Ваше первое заявление "мерзавца тянуть это как мерзавец принести + GIT слияния. ",

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

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


Для вашего второго заявления / вопрос: в чем разница между мерзавца тянуть VS мерзавца принести + GIT перебазироваться" Опять же, из того же источника:

"С помощью --rebase он запускает git rebase вместо git merge".


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

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