Git中的非快进更新

时间:2016-04-20 15:30:26

标签: git

我查看了Note about fast-forwards并知道fast-forward如何更新分支。但我想知道non fast-forward如何更新分支?上面的文档说:

  

例如,假设您和其他人在同一次提交时开始   X,你建立了一个历史导致提交B而另一个人   建立了一个导致提交A的历史。历史看起来像这样:

      B
     /
 ---X---A
  

如果您执行 非快进 更新,则提交A引入的更改将丢失,   因为每个人现在都将开始在B之上建立。

losing changes introduced by A对我来说并不清楚。完全non fast-forward更新overwrite目标分支并从历史记录中删除A吗?所以历史看起来像X -- B。或者它只是尝试合并?或者会发生另一种变化?

2 个答案:

答案 0 :(得分:2)

您必须考虑到链接页面正在讨论git push,即您正在将本地分支上传到远程服务器。

在这种情况下,执行快进更新是常见的事情:您只需将提交添加到远程分支的提示。相反,非快进更新是在可能添加更多提交之前从远程分支的尖端删除提交的推送。

回答你的问题:

  

非快进更新是否完全覆盖目标分支并从历史记录中删除A?

是的,它会做到这一点。您强制远程分支看起来与本地分支完全相同。

答案 1 :(得分:1)

是的,如果你这样做,B会在更新中有效地替换A.通常你会在推动之前尝试在A之上重新定位B.