为了账号安全,请及时绑定邮箱和手机立即绑定

`git merge`和`git merge --no-ff`有什么区别?

`git merge`和`git merge --no-ff`有什么区别?

Git
Helenr 2019-08-05 16:43:34
`git merge`和`git merge --no-ff`有什么区别?使用gitk log,我无法发现两者之间的差异。如何观察差异(使用git命令或某些工具)?
查看完整描述

3 回答

?
jeck猫

TA贡献1909条经验 获得超7个赞

如果--no-ff标志git merge检测到您当前HEAD是您尝试合并的提交的祖先,则该标志会阻止执行“快进” 。快进是指git只是将您的分支指针移动到指向传入提交的位置,而不是构建合并提交。这通常发生在git pull没有任何本地更改的情况下。

但是,有时您希望防止此行为发生,通常是因为您希望维护特定的分支拓扑(例如,您正在合并主题分支,并且您希望确保在阅读历史记录时看起来如此)。为了做到这一点,你可以通过--no-ff标志和git merge始终构造一个合并,而不是快速转发。

同样,如果你想执行一个git pull或者使用git merge以便明确地快进,并且你想要在它不能快进时挽救,那么你可以使用该--ff-only标志。通过这种方式,您可以不git pull --ff-only经思考地定期执行某些操作,然后如果错误,您可以返回并决定是否要合并或重新绑定。


查看完整回答
反对 回复 2019-08-05
?
凤凰求蛊

TA贡献1825条经验 获得超4个赞

--no-ff选项确保不会发生快进合并,并始终创建新的提交对象。如果您希望git维护功能分支的历史记录,这可能是理想的。             在上面的图像中,左侧是使用后的git历史git merge --no-ff的示例,右侧是可以使用git mergeff合并的示例。

编辑:此图像的先前版本仅指示合并提交的单个父项。合并提交有多个父提交,git用它来维护“特征分支”和原始分支的历史记录。多个父链接以绿色突出显示。


查看完整回答
反对 回复 2019-08-05
  • 3 回答
  • 0 关注
  • 1948 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信