Почему git использует разные инструменты сравнения в разных репозиториях?
Я пытаюсь настроить opendiff в качестве моего графического git difftool. Другими словами, я хочу, чтобы opendiff открыл графическое окно и показал изменения в моем файле при вводе git difftool
в командной строке. Я добавил следующую конфигурацию в мой ~/.gitconfig
:
[diff]
tool = opendiff
[difftool]
prompt = false
[difftool "opendiff"]
cmd = opendiff \"$LOCAL\" \"$REMOTE\"
Когда я бегу git difftool
в большинстве репозиториев он открывает opendiff по своему желанию, но в одном конкретном репо он всегда просто показывает мне текстовый diff в терминале.
Я бегал 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 ответ
Это различие, которое вы видите, может быть результатом различных настроек в локальных и глобальных конфигурациях.
Попробуйте сравнить результаты следующих действий:
git config --global -l
а также
git config --local -l
Затем, чтобы изменить поведение определенного репо, который вы описали как вызов другого инструмента, я бы попытался войти в этот репо и сбросить конфигурацию с помощью --unset
вдоль линий
git config --local --unset difftool
или, может быть
git config --local --unset diff.tool