Невозможно понять, как установлены конфиги Git difftool

Мне нужно было использовать в моем старом Git настройки, аналогичные приведенным ниже, чтобы иметь возможность использовать difftool. Настройки не совсем одинаковые, так как я случайно удалил свой старый.gitconfig.

 [merge]
     tool=opendiff

 [mergetool]
     tool=opendiff

 [difftool]
     difftool=opendiff

У меня дома есть пустой.gitconfig. Я могу использовать еще opendiff -tool. Это сюрприз, так как это должно быть невозможно.

Как внутри Git работают настройки difftool?

2 ответа

Решение

Вы можете увидеть полную настройку, используя mergetool и difftool здесь.

Если кажется, что параметр все еще активен, это может быть связано с тем, что он был задан глобально или в вашей учетной записи, поскольку в git-config есть три файла для поиска параметров конфигурации:

$GIT_DIR/config

Конфигурационный файл репозитория. (Имя файла, конечно, относительно корня хранилища, а не рабочего каталога.)

~/.gitconfig

Пользовательский файл конфигурации. Также называется "глобальным" файлом конфигурации в месте установки вашего Git:

$(prefix)/etc/gitconfig

Общесистемный файл конфигурации.


Git сохраняет информацию пользователя, куда бы вы ее ни говорили, чтобы сохранить при вводе 'git config":

Со страницы руководства git config:

Параметр файла может быть одним из --system, --global или же --file которые указывают, откуда будут считываться или записываться значения.
По умолчанию предполагается, что файл конфигурации текущего репозитория,.git / config, если не указано иное с GIT_DIR а также GIT_CONFIG,

Вы можете переопределить эти правила либо с помощью параметров командной строки, либо с помощью переменных среды. --global и --system options ограничит используемый файл глобальным или общесистемным файлом соответственно.
GIT_CONFIG Переменная окружения имеет аналогичный эффект, но вы можете указать любое имя файла.

Может быть, эта переменная окружения была установлена ​​в вашей предыдущей установке?

GIT_CONFIG

Возьмите конфигурацию из данного файла вместо .git/config, С использованием "--globalвариант заставляет это ~/.gitconfig, С использованием "--systemвариант заставляет это $(prefix)/etc/gitconfig,

Примечание: для Mac OsX, $(prefix) должно быть /usr/local (если вы установили Git, как описано здесь)

make prefix=/usr/local all
sudo make prefix=/usr/local install
which git

Вы также должны (помимо запоминания многих мест, где Git ищет конфигурацию, как указано в ответе VonC) помнить, что и git-difftool, и git-mergetool предоставляют некоторое автоопределение / автообнаружение (в некотором фиксированном порядке предпочтений), какие инструменты у вас есть в наличии.

Это может быть причиной того, что "git difftool" вызывает opendiff на вашем компьютере.

Другие вопросы по тегам