origin/master
has commit A--B--C
と私のlocal/master
has commitがあるとしましょう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
はマージコミットを導入できますが、リベースとffのみを使用することをお勧めします。
D
ローカルの変更にコミットがない場合はどうなりますか?両方のコマンドは同等ですか?