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

假设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在远程更改可以被快速转发--ff-only应用。 从男人:

拒绝合并并以非零状态退出,除非当前HEAD已经是最新的,或者合并可以被解决为快进

由于你的本地和远程分支已经发生了分歧,它们不能通过快速解决,而且git pull --ff-only失败。