У меня есть настройка, в которой я кодирую на своей машине local
и вытаскиваю ее из коробки dev
, чтобы проверить ее.
Скажем, я создаю коммит A
на ветке foo
на local
и создаю ветку foo
на устройстве dev, для которого восходящий поток установлен как local/foo
. Если я сделаю git pull
из ветви foo
на устройстве dev, дерево ветви dev/foo
станет таким же, как local/foo
.
Но если я сейчас исправлю коммит A
в local/foo
, git pull
из ветви foo
в поле dev вызывает конфликт слияния. Принимая во внимание, что git pull --rebase
работает правильно и не дублирует коммит A
дважды на dev/foo
.
git help pull
говорит, что:
-r, --rebase[=false|true|merges|preserve|interactive]
When true, rebase the current branch on top of the upstream branch after
fetching. If there is a remote-tracking branch corresponding to the upstream branch
and the upstream branch was rebased since last fetched, the rebase uses that
information to avoid rebasing non-local changes.
Я понял, что в приведенном выше сценарии применяется последняя строка, но я не понимаю, каковы предварительные условия или как они работают?
Объяснение было бы очень полезно.
Спасибо