我需要在我的旧Git中使用类似以下的设置才能使用difftool。设置并不完全相同,因为我偶然删除了旧的.gitconfig。
[merge]
tool=opendiff
[mergetool]
tool=opendiff
[difftool]
difftool=opendiff
我家里有一个空的.gitconfig。 我仍然可以使用opendiff -tool。 这是一个惊喜,因为它应该是不可能的。
Git的difftool设置如何在内部工作?
答案 0 :(得分:5)
您可以看到complete setup using mergetool and difftool here。
如果设置似乎仍处于活动状态,可能是因为它已在全局或您的帐户中设置,因为有三个文件git-config将搜索配置选项:
$GIT_DIR/config
特定于存储库的配置文件。 (文件名当然是相对于存储库根目录而不是工作目录。)
~/.gitconfig
特定于用户的配置文件。在Git的安装位置也称为“全局”配置文件:
$(prefix)/etc/gitconfig
系统范围的配置文件。
当您输入“git config
”时,Git会将用户信息保存到您要保存的位置:
文件选项可以是
--system
,--global
或--file
之一,用于指定读取或写入值的位置。
默认情况下,假定当前存储库的配置文件.git / config,除非使用GIT_DIR
和GIT_CONFIG
另行定义。您可以通过命令行选项或环境变量覆盖这些规则。
--global
和--system
选项将分别限制用于全局或系统范围文件的文件。
GIT_CONFIG
环境变量具有类似的效果,但您可以指定所需的任何文件名。
您可能在之前的安装中设置了环境变量吗?
GIT_CONFIG
从给定文件而不是.git/config
获取配置。使用“--global
”选项会将其强制为~/.gitconfig
。使用“--system
”选项会将其强制为$(prefix)/etc/gitconfig
。
注意:对于Mac OsX,$(prefix)
应为/usr/local
(如果您将Git安装为described here)
make prefix=/usr/local all
sudo make prefix=/usr/local install
which git
答案 1 :(得分:3)
除了记住Git搜索配置的许多地方(如response by VonC中所述)之外,您还记得git-difftool和git-mergetool提供了一些自动检测/自动发现(在一些固定的优先顺序)你可以使用哪些工具。
这个可能是“git difftool”在你的计算机上调用opendiff的原因。