Скажімо, 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
в місцевих змінах не буде зроблено коміту? Чи були б обидві команди рівноцінними?