如何让git log/git show命令显示提交中的文件复制/重写信息
解决方案
原因说明
Git 提交时输出的 rewrite、copy 判定基于文件相似度检测,默认git log/git show未启用完整的复制检测逻辑,且默认的相似度判定阈值高于你提交时的文件匹配度,因此会将复制/重写操作识别为新建文件操作。
单次调用临时生效
执行命令时添加-M(开启重命名/重写检测)、-C(开启复制检测)参数,可按需指定相似度阈值:
- 查看指定提交的完整文件变更状态:
git show -M75% -C60% --summary 1d8c20c
你提交记录中 rewrite 相似度为78%、copy 相似度为61%,上述阈值可以完美匹配对应判定结果。
- 查看全量提交日志的对应信息:
git log -M -C --summary
全局配置永久生效
执行以下命令配置 Git 默认开启相关检测,后续无需额外加参数即可直接显示对应信息:
# 开启重命名+复制检测 git config --global diff.renames copies # 调整检测的文件数量上限,避免文件过多时检测失效 git config --global diff.renameLimit 9999 # 设置重命名/重写判定的最低相似度阈值 git config --global diff.renameThreshold 70% # 设置复制判定的最低相似度阈值 git config --global diff.copyThreshold 60%
配置完成后直接执行git show 1d8c20c或git log --summary即可正常显示 rewrite、copy 相关的状态信息。
内容的提问来源于stack exchange,提问作者ciis0
相关产品推荐
相关产品推荐

