如何编写Git别名以正确显示文件全部提交记录(含相关合并提交)
解决方案
问题根因
生产仓库分支结构、合并记录复杂度远高于测试仓库,仅使用-c/--cc -s参数时,Git默认会返回所有包含目标文件修改路径的合并提交,不会自动剔除未实际修改目标文件的合并提交,这就是多余提交出现的核心原因。
正确别名配置
file-history = log --follow --date-order --date=short -C --cc -s --simplify-merges --diff-filter=AM
参数说明
--simplify-merges:自动过滤所有没有实际修改目标文件的合并提交,是解决多余合并返回问题的核心参数--diff-filter=AM:仅保留对目标文件执行了新增(A)、修改(M)操作的提交,过滤删除、权限变更等无关操作的提交,如果需要保留重命名记录可以修改为--diff-filter=AMR-s:关闭diff内容输出,仅展示提交元信息,不需要可以直接删除或者替换为--stat查看修改统计
效果验证
该配置的输出逻辑与GitHub、BitBucket的文件提交历史完全对齐,只会返回所有实际修改过目标文件的普通提交和关联合并提交,不会出现重复提交、无关合并提交的问题。
内容的提问来源于stack exchange,提问作者user3341592
相关产品推荐
相关产品推荐

