gpt4 book ai didi

Git:为 difftool 和 mergetool 配置模式

转载 作者:太空狗 更新时间:2023-10-29 13:13:40 28 4
gpt4 key购买 nike

在 Mercurial 中,可以为外部 diff 和 merge 工具定义一个模式(这样它们只会被与指定模式匹配的文件调用):

[diff-patterns]
**.ext = difftool
[merge-patterns]
**.ext = mergetool

如何在 Git 中定义这样的模式?

git-config(1) 中的 [mergetool] 部分没有提到任何模式、掩码或任何类似的内容。

编辑:

这是我的 .git/config 的相关部分:

[diff]
tool = difftool
[difftool "difftool"]
cmd = difftool.git.sh "$LOCAL" "$REMOTE" "$BASE"

[merge]
tool = mergetool
[mergetool "mergetool"]
cmd = mergetool.git.sh "$LOCAL" "$REMOTE" "$BASE" "$MERGED"

现在它适用于所有文件。

我希望我的 difftool 和 mergetool 被调用用于名称以 .ext 结尾的文件

编辑:

我添加了一个包含以下内容的文件 .git/info/attributes:

*.ext   diff=difftool
*.ext merge=mergetool

我也添加了

[diff "difftool"]
name = my custom diff driver
driver = difftool.git.sh %A %B %O
[merge "mergetool"]
name = my custom merge driver
driver = mergetool.git.sh %A %B %O %A

到我的 .git/config.

现在我跑

git difftool

它调用 KDiff3 而不是我的 difftool。我做错了什么?

备注:我正在使用 difftool 而不是 mergetool,因为它更容易测试,而且我相信如果我设法配置 difftool,那么如何配置 mergetool 对我来说就很明显了。

编辑:

Difftool 现在可以使用了。

.git/配置:

[diff "difftool"]
command = difftool.git.sh

.git/信息/属性:

.ext diff=difftool

difftool.git.sh(在路径中)

#!/bin/sh
difftool.jar "$2" "$5"

但是在 Windows 上有一个副作用:git diff 现在会导致 APPCRASH。

编辑:

我已经想出了如何避免 git diff 崩溃或挂起的方法:应该使用 git difftool 或通过 调用 git diff >sh: sh -c "git diff"

最佳答案

您将在 gitattributes file 中使用 merge 驱动程序.

例如参见“How do I tell git to always select my local version for conflicted merges on a specific file?

*.ext merge=mymergetool

您可以在 gitattributes 文件中使用模式。

关于Git:为 difftool 和 mergetool 配置模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7403102/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com