Скажімо, origin/masterмає коміт, A--B--Cа мій local/masterкоміт A--B--D.
Що станеться, якщо я використаю git pull --rebase?
Що станеться, якщо я використаю git pull --ff-only?
Чи є якась різниця в отриманому дереві комітів?
Відповіді:
Що станеться, якщо я застосую 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не вдасться.
A--B--C.
git pull --rebase --ff-onlyробити? (припускаючи, що є C & D)
pullможе вводити коміти злиття, тоді як ви можете віддати перевагу роботі лише з rebase та ff.
Dв місцевих змінах не буде зроблено коміту? Чи були б обидві команди рівноцінними?