如何通过Git/GitHub将main分支提交按合并类型归类为四类?
区分Git/GitHub不同方式产生的提交
可以通过Git的提交结构和GitHub的记录来区分这四类提交,具体方法如下:
1. 标准合并(standard merge)提交
- 属于合并提交,用
git log --merges能直接筛选出来,这类提交有两个父提交 - 执行
git show <提交哈希>查看详情,会显示Merge:开头的行,标注两个父提交的哈希 - 在GitHub上,这类提交页面会明确显示「Merge branch 'xxx' into main」的标题,还能看到关联的分支信息
2. 压缩合并(squash and merge)提交
- 是普通的单父提交,但GitHub默认会给这类提交的信息加上前缀(比如「Squash merge of #<PR编号>: 原分支提交标题」),如果没手动修改提交信息,一眼就能识别
- 可通过GitHub的PR记录追溯:找到对应PR,查看合并方式为「Squash and merge」,该PR对应的唯一提交就是压缩后的结果
- Git本地没有内置标记,只能结合GitHub的PR历史区分
3. 变基合并(rebase and merge)提交
- 这类提交的哈希值和原功能分支上的提交不一样(变基会重新生成提交)
- 在GitHub上,对应PR的合并方式会显示为「Rebase and merge」,通过PR页面能关联到这些提交
- 本地Git没法直接区分,但如果保留了原功能分支,对比哈希值就能发现差异;或者看时间线,变基后的提交会保留原时间,但位置在main分支的较新位置
4. 直接提交至main分支的提交
- 没有关联任何PR记录(正常操作下不会在main提交后开PR)
- 提交的父提交就是main分支的前一个提交,没有合并相关的标记
- 在GitHub上,这类提交的作者是直接在main分支操作的用户,找不到对应的PR合并记录
注意
Git本身不会给不同方式的提交加特殊标记,主要靠提交结构(比如合并提交的双父)和GitHub的PR记录来区分。如果手动改了提交信息或者删了PR记录,部分提交的分类就会变困难。
内容的提问来源于stack exchange,提问作者simplename
相关产品推荐
相关产品推荐

