git pull -rebase和git pull -ff-only之间的区别

让我们说origin/master已经提交了A--B--C,而我的local/master已经提交了A--B--D

如果我使用git pull --rebase会发生什么?

如果我使用git pull --ff-only会发生什么?

生成的提交树有什么不同吗?

109587 次浏览

如果我使用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将失败。