当运行 git mergetool
时,我想让 git 根据文件扩展名选择使用的 merge 工具。我怎样才能做到这一点?
此处提出了类似的问题:Git: configure patterns for difftool and mergetool
答案是编写自定义 merge 驱动程序。但是,这似乎会在 git merge
上执行,而我希望在 git mergetool
上选择 merge 工具。
似乎必须有一些方法可以用 .gitattributes 来指定它,但我似乎无法弄清楚如何。有什么建议吗?
最佳答案
一个解决方案(因为我的 old answer 不适合 mergetool
)是将 mergetool
设置为 wrapper script .
git config --global merge.tool customMergeTool
git config --global mergetool.customMergeTool.cmd 'customMergeTool.sh \"$BASE\" \"$LOCAL\" \"$REMOTE\" \"$MERGED\"'
包装器脚本 customMergeTool.sh
将:
- 检查
$BASE
是什么(特别是它的文件扩展名) - 根据该扩展调用适当的 merge 工具
- 返回那个
mergetool
的退出状态
例如,这是 OP elsevers 的脚本想出了:merge-wrapper
.
关于git - 根据文件类型选择 git mergetool,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23313620/