git - 如何为 Git 中的特定文件扩展名设置 difftool/mergetool?

标签 git version-control git-merge git-diff git-config

是否可以在 Git 中设置一个自定义工具来 merge 具有特定扩展名的文件?

谢谢指点!

更新

除了定义自定义 difftool 并按照@jarodeells 的建议手动调用它之外,我想不出任何更好的解决方案:

[diff]
    tool = mydiff
[difftool "mydiff"]
    cmd="script.sh \"$LOCAL\" \"$REMOTE\""

然后显式调用它:

$ git difftool -t mydiff someFileWith.ext

最佳答案

更新:请参阅下面的@Ackdari 评论。外部工具不必基于命令行。我不确定在使用外部工具时 git 如何使用 binary = True,但我怀疑它可能是所有流程工作所必需的。

如果您的外部差异工具*仅是命令行(无 GUI),您可以为此使用内置的 gitattributes:

.gitconfig 添加:

[diff "my_diff"]
    command = Tools/csv_diff
    binary = true # Not sure this is required.

并在 .gitattributes(全局或每个存储库,参见 here)中添加:

*.csv diff=my_diff

[*] 外部 diff 工具的命令将由 git 使用手册中 GIT_EXTERNAL_DIFF 中详述的 7 个参数调用 here .

关于git - 如何为 Git 中的特定文件扩展名设置 difftool/mergetool?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12356917/

相关文章:

javascript - 什么版本控制软件最适合纯 HTML/CSS/JavaScript 网站?

Git:如何将 "undo" merge

Git 从上一次提交推送

git - 需要在 git-archive 中处理 git-submodules

xcode - xcuserdata 文件夹中所有内容的 .gitignore 不会忽略 xcuserstate 文件

xcode - 如何保存断点,使它们成为源代码管理提交项目的一部分

git - 了解 Git merge

git - 我可以查看每个存储条目到底包含什么内容吗?

git - 说服 git blame 一个分支比另一个分支与历史更相关

Git - diff3 Conflict Style - 临时 merge 分支