web-dev-qa-db-ja.com

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

Origin/masterがコミットA--B--Cを持ち、私のlocal/masterがコミットA--B--Dを持っているとしましょう。

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

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

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

74
Nico

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は失敗します。

98