为什么git在不同的存储库中使用不同的diff工具?

时间:2018-07-27 22:09:18

标签: git opendiff

我正在尝试将opendiff设置为图形git difftool。换句话说,我希望opendiff打开图形窗口并在命令行上输入git difftool时显示文件更改。我已经在我的~/.gitconfig中添加了以下配置:

[diff]
    tool = opendiff
[difftool]
    prompt = false
[difftool "opendiff"]
    cmd = opendiff \"$LOCAL\" \"$REMOTE\"

当我在大多数存储库中运行git difftool时,它会按我的意愿打开opendiff,但是在一个特定的仓库中,它总是只向我显示终端中的文本差异。

我在两个存储库中都运行过git config --list,唯一的不同是您期望的-源名称和分支名称,等等-所有diff设置都是相同的。

那么-还有什么可能导致git在这两个存储库中以不同的方式工作?

编辑:

行为不佳的回购协议.git/config的内容,略作编辑:

[core]
    repositoryformatversion = 0
    filemode = true
    bare = false
    logallrefupdates = true
    ignorecase = true
    precomposeunicode = true
[remote "origin"]
    url = git@<ORIGIN_URL>
    fetch = +refs/heads/*:refs/remotes/origin/*
[branch "develop"]
    remote = origin
    merge = refs/heads/develop
[branch "feature/FEATURE1"]
    remote = origin
    merge = refs/heads/FEATURE1
[branch "feature/FEATURE2"]
    remote = origin
    merge = refs/heads/FEATURE2

EDIT2:

这是两个存储库中git config --list之间的差异,略作编辑:

40c40
< remote.origin.url=git@<GOOD_REPO_URL>
---
> remote.origin.url=git@<BAD_REPO_URL>
42,43c42,47
< branch.master.remote=origin
< branch.master.merge=refs/heads/master
---
> branch.develop.remote=origin
> branch.develop.merge=refs/heads/develop
> branch.feature/FEATURE1.remote=origin
> branch.feature/FEATURE1.merge=refs/heads/feature/FEATURE1
> branch.feature/FEATURE2.remote=origin
> branch.feature/FEATURE2.merge=refs/heads/feature/FEATURE2

EDIT3:

好吧,这很尴尬。我再也无法重现此问题!现在,它可以像我期望的那样在两个存储库中运行。我发誓我什么都没改变,伙计们……只是在家而不是工作。小妖精?

1 个答案:

答案 0 :(得分:0)

您看到的这种差异可能是本地和全局配置中不同设置的结果。

尝试比较以下内容的输出:

git config --global -l

git config --local -l

然后,要更改您描述为调用其他工具的特定存储库的行为,我将尝试进入该存储库并使用--unset沿

的行重置配置。

git config --local --unset difftool

或者也许

git config --local --unset diff.tool

相关问题