получение по запросу мерзавца перебаза мерзавцев выборки мерзавца VS

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

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

286
задан Community 23 May 2017 в 02:10
поделиться

1 ответ

Из вашего вопроса должно быть довольно очевидно, что вы на самом деле просто спрашиваете о разнице между 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 для данной ветви на использование перебазирования вместо слияния, установив для параметра конфигурации branch. .rebase значение true . Вы также можете сделать это за один проход, используя git pull --rebase .

333
ответ дан 23 November 2019 в 01:50
поделиться
Другие вопросы по тегам:

Похожие вопросы: