从Git合并commit创建新分支后,合入分支的提交消失怎么办
问题根因
合并提交H存在两个父提交:
- 第一个父提交是执行合并操作时所在的master分支的最新提交D
- 第二个父提交是被合并的develop分支的最新提交G
Git默认采用线性回溯策略展示提交历史,只会沿着合并提交的第一个父提交链路追溯,因此只会显示A-B-C-D-H这条主线的提交,develop分支的E、F、G提交默认被隐藏,并非真的从新分支的历史中丢失。
查看完整历史的方法
命令行操作
执行带--graph参数的log命令,即可展示包含所有合并链路的完整提交历史:
git log --graph
如果需要更简洁的可读格式,可以追加--oneline参数:
git log --graph --oneline
如果需要单独验证某个提交是否存在于当前分支,直接查询对应提交哈希即可,没有报错就说明提交确实属于当前分支:
git show <E/F/G对应的提交哈希>
Git Desktop操作
调整历史展示设置即可显示被隐藏的合并分支提交:
- 切换到历史Tab页
- 点击右上角的历史展示设置按钮(齿轮/三点图标)
- 勾选「显示完整历史」/「展示合并提交的所有父链路」选项(不同版本Git Desktop表述略有差异)
补充说明:你从H创建的新分支已经完整包含E、F、G的所有代码变更,默认隐藏提交仅属于展示逻辑,不会对代码内容和分支完整性产生任何影响。
内容的提问来源于stack exchange,提问作者ffs
相关产品推荐
相关产品推荐

