Разница между git pull --rebase и git pull --ff-only
Скажем, origin/master имеет commit A--B--C, а my local/master имеет commit A--B--D.
Что произойдет, если я использую git pull --rebase?
Что произойдет, если я использую git pull --ff-only?
Есть ли разница в полученном дереве компиляции?
Ответ 1
Что произойдет, если я использую git pull --rebase?
git pull --rebase примерно эквивалентен
git fetch
git rebase origin/master
то есть. ваши удаленные изменения (C) будут применены перед локальными изменениями (D), в результате получится следующее дерево
A -- B -- C -- D
Что произойдет, если я использую git pull -ff-only?
Это не сработает.
git pull --ff-only соответствует
git fetch
git merge --ff-only origin/master
--ff-only применяет удаленные изменения только в том случае, если их можно быстро перенаправить. От человека:
Откажитесь от слияния и выхода с ненулевым статусом, если текущая HEAD уже обновлена или слияние может быть разрешено как ускоренная перемотка вперед
Поскольку ваши локальные и удаленные ветки расходятся, они не могут быть устранены с помощью быстрой перемотки вперед, а git pull --ff-only завершится с ошибкой.