git pull --rebaseとgit pull --ff-onlyの違い


102

origin/masterhas commit A--B--Cと私のlocal/masterhas commitがあるとしましょうA--B--D

使用するとどうなりますgit pull --rebaseか?

使用するとどうなりますgit pull --ff-onlyか?

結果のコミットツリーに違いはありますか?

回答:


127

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ます。
ガブリエレペトロネラ2014

どうするgit pull --rebase --ff-only?(C&Dがあると仮定)
Refael Ackermann 2017

2
IIRC --ff-onlyオプションは--rebaseと組み合わせると単に無視されます
Gabriele Petronella

5
@BreakingBenjamin線形履歴を保証したい場合に便利です。デフォルトでpullはマージコミットを導入できますが、リベースとffのみを使用することをお勧めします。
ガブリエレペトロ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.