如何在Git中为不同文件类型默认配置对应的diff命令
完全可以通过 .gitconfig + .gitattributes 组合配置实现需求,配置完成后直接执行原生 git diff 命令就会自动按文件后缀调用对应diff工具,原有手动调用的git jdiff能力也不会受影响。
配置步骤
1. 调整.gitconfig配置,定义不同文件类型的diff驱动
在你现有的.gitconfig基础上新增不同文件类型的diff驱动配置:
# 你原有配置保留,不影响原有使用习惯 [difftool "jsondiff"] cmd = "json-diff $LOCAL $REMOTE --color=always | less -r" [alias] jdiff = difftool -t jsondiff -y # 新增自动匹配的diff驱动配置 [diff "json"] command = json-diff $LOCAL $REMOTE --color=always | less -r # 以下为JS文件的diff驱动示例,command字段替换为你实际使用的JS diff工具命令即可 [diff "js"] command = js-diff $LOCAL $REMOTE --color=always # 其他文件类型的自定义diff规则可按上述格式新增
配置中$LOCAL和$REMOTE是Git自动传入的新旧版本临时文件路径,不需要手动修改。
2. 配置.gitattributes关联文件后缀与diff驱动
你可以选择规则的生效范围:
- 全局生效:在用户根目录创建
~/.gitattributes文件(Windows系统路径为C:\Users\你的用户名\.gitattributes),规则对本地所有Git仓库生效 - 项目级生效:在项目根目录创建
.gitattributes文件,提交到仓库后所有协作者都可以共用这套规则
在.gitattributes文件中添加以下内容:
*.json diff=json *.js diff=js # 其他后缀按 `*.后缀名 diff=驱动名` 格式添加即可
3. 验证效果
配置完成后直接执行git diff即可,Git会自动识别文件后缀调用对应的diff命令。如果临时需要使用Git原生diff输出,可以加--no-ext-diff参数:
git diff --no-ext-diff
内容的提问来源于stack exchange,提问作者juacala
相关产品推荐
相关产品推荐

