You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让Git diff中的old mode/new mode变更显示颜色?

给Git Diff权限变更行添加颜色

最简便的实现:配置Git Pager自动上色

不用写复杂脚本,直接通过Git全局配置让old mode xxx和new mode xxx行自动显示红/绿配色(和代码变更一致):

执行以下命令:

git config --global core.pager 'less -R -F -X | sed -e "s/old mode [0-9]*/\x1b[31m&\x1b[0m/g" -e "s/new mode [0-9]*/\x1b[32m&\x1b[0m/g"'
  • \x1b[31m 对应红色(旧权限行),\x1b[32m 对应绿色(新权限行)
  • less -R 确保终端能正确解析ANSI颜色代码
  • 去掉--global即可只对当前仓库生效

备选方案:自定义Git Diff颜色规则

如果想通过Git自身的颜色体系配置,可创建自定义规则,但本质还是依赖文本替换:

  1. 新建颜色配置文件~/.gitdiff_mode_colors:
[diff "mode_colors"]
    old_mode = red bold
    new_mode = green bold
  1. 关联到Git配置:
git config --global diff.mode_colors.command "git diff --no-color | sed -e 's/old mode /\x1b[31m&/g' -e 's/new mode /\x1b[32m&/g'"

不过这种方式比Pager配置繁琐,更推荐第一种。

关于你的Perl后处理脚本

如果需要更灵活的逻辑(比如根据权限值自定义颜色、过滤特定权限变更),用Perl脚本做后处理是很好的选择。你可以把脚本集成到bash函数里,调试完成后分享出来也能帮到其他遇到同样问题的人。

内容的提问来源于stack exchange,提问作者Alex Martian

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 10:52:45