Різниця між git pull --rebase та git pull --ffff-only


102

Скажімо, origin/masterмає коміт, A--B--Cа мій local/masterкоміт A--B--D.

Що станеться, якщо я використаю git pull --rebase?

Що станеться, якщо я використаю git pull --ff-only?

Чи є якась різниця в отриманому дереві комітів?

Відповіді:


126

Що станеться, якщо я застосую 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не вдасться.


Що станеться, якщо Dв місцевих змінах не буде зроблено коміту? Чи були б обидві команди рівноцінними?
Ніко

7
Так, вони обидва призвели б до A--B--C.
Габріеле Петронелла

що git pull --rebase --ff-onlyробити? (припускаючи, що є C & D)
Рефаель Акерманн,

2
IIRC параметр --ff-only просто ігнорується в поєднанні з --rebase
Габріеле Петронелла

5
@BreakingBenjamin корисно, якщо ви хочете гарантувати лінійну історію. За замовчуванням pullможе вводити коміти злиття, тоді як ви можете віддати перевагу роботі лише з rebase та ff.
Габріеле Петронелла
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.