Невозможно понять, как установлены конфиги 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 на вашем компьютере.