Git 最后一次合并提交被忽略:双向合并后仅显示单次提交的解决方法
我的操作步骤
- 步骤1:将
develop分支合并到feature分支 - 步骤2:确认所有内容校验正常后,立刻将
feature分支合并回develop分支
遇到的异常情况
完成上述操作后,实际提交记录的表现和预期不符:
提交历史中仅显示「将 develop 合并到 feature」的提交记录,「将 feature 合并回 develop」的提交完全没有出现。
预期效果
我希望两次合并操作对应的提交都能在提交历史中正常展示,最终的记录样式参考如下:
问题原因和对应解法
出现这个现象是Git的默认合并逻辑导致的:
Git默认开启快进(Fast-forward)合并规则:当你把 develop 合并到 feature 之后,feature 分支的提交已经完全覆盖了 develop 的所有最新提交,这时候你切回 develop 去合并 feature,Git会发现两边的提交链是完全连贯的,根本不需要额外生成一个合并节点,只需要把 develop 的分支指针直接挪到 feature 的最新提交位置就行,自然不会留下第二次合并的提交记录。
如果要让两次合并的提交都完整展示在历史里,只需要在执行第二次合并的时候,强制Git生成合并节点、跳过快进逻辑就可以:
- 先按原流程走完第一步:在
feature分支执行git merge develop,完成第一次合并,这个提交会正常显示在历史里 - 切回
develop分支,执行合并操作的时候加上--no-ff参数,手动指定合并提交信息:git merge --no-ff feature -m "将feature分支合并回develop"
加了这个参数之后,不管当前分支的状态是不是满足快进条件,Git都会生成一个独立的合并提交,两次合并的记录就都会按照你预期的样式展示了。
内容的提问来源于stack exchange,提问作者Jakov
相关产品推荐
相关产品推荐

