假设origin/master提交了A- B- C我的local/master提交了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拉来解决——ff-only将失败。