ГИТ тянуть против ГИТ выборки ГИТ перебазирования



еще один вопрос сказал git pull Как git fetch + git merge.



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

647   2  

2 ответов:

это должно быть довольно очевидно из вашего вопроса, Что вы просто спрашиваете о разнице между git merge и git rebase.

Итак, предположим, что вы находитесь в общем случае - вы сделали некоторую работу над своей главной ветвью, и вы тянете из origin, который также сделал некоторую работу. После выборки все выглядит так:

- 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)

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

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

в ответ на ваше первое заявление ' git pull-это как git fetch + git merge.',

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

(Ref:https://git-scm.com/docs/git-pull)


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

" с --rebase, он запускает git rebase вместо git merge."


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

Comments

    Ничего не найдено.