git - 根据文件类型选择 git mergetool

标签 git merge git-config gitattributes

当运行 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/

相关文章:

ios - 更新cocoaPods时Git推送失败

git - 1 个 Git 存储库中的多个 Netbeans 项目

Git 克隆在特定存储库上返回结果=18 代码=200

git-config - git : fatal unable to auto-detect email address

git - 如何理解 .git/conf 文件中的远程 "origin"获取设置?

git core.ignorecase = false 在 Mac OS X 中

git - 如何从 Windows cmd 保存 git 提交消息?

Git:git/linux维护者如何维护这么多分支

r - 按列名合并 R

mysql - SQL如何将相似的记录合并到同一个表的单行中?