Git pull --rebase ve git pull --ff-only arasındaki fark


108

Diyelim ki origin/mastertaahhüt var A--B--Cve benim local/mastertaahhüdü var A--B--D.

Kullanırsam ne olur git pull --rebase?

Kullanırsam ne olur git pull --ff-only?

Ortaya çıkan commit ağacında herhangi bir fark var mı?

Yanıtlar:


132

Git pull --rebase kullanırsam ne olur?

git pull --rebase kabaca eşdeğerdir

git fetch
git rebase origin/master

yani, uzaktan değişiklikleriniz ( C) yerel değişikliklerden ( D) önce uygulanacak ve aşağıdaki ağaç ortaya çıkacaktır.

A -- B -- C -- D

Git pull --ff-only kullanırsam ne olur?

Başarısız olacak.

git pull --ff-only karşılık gelir

git fetch
git merge --ff-only origin/master

--ff-onlyuzak değişiklikleri yalnızca hızlı ileri alınabiliyorsa uygular. Adamdan:

Mevcut HEAD zaten güncel değilse veya birleştirme hızlı ileri sarma olarak çözülemiyorsa, sıfır olmayan bir durumla birleştirmeyi ve çıkmayı reddedin

Yerel ve uzak şubeleriniz birbirinden ayrıldığı için, hızlı ileri sarma ile çözülemez ve git pull --ff-onlybaşarısız olur.


DYerel değişimde taahhüt olmazsa ne olur ? Her iki komut da eşdeğer olur mu?
Nico

7
Evet, ikisi de sonuçlanır A--B--C.
Gabriele Petronella

ne olur git pull --rebase --ff-onlymusunuz? (C & D olduğu varsayılarak)
Refael Ackermann

2
IIRC - sadece --dışı seçeneği --rebase
Gabriele Petronella

5
@BreakingBenjamin, doğrusal bir geçmişi garanti etmek istiyorsanız yararlıdır. Varsayılan olarak pullbirleştirme taahhütleri sunabilir, oysa yalnızca rebase ve ff ile çalışmayı tercih edebilirsiniz.
Gabriele Petronella
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.