无法理解Git的difftool配置是如何设置的

时间:2009-06-30 13:13:55

标签: git macos difftool

我需要在我的旧Git中使用类似以下的设置才能使用difftool。设置并不完全相同,因为我偶然删除了旧的.gitconfig。

 [merge]
     tool=opendiff

 [mergetool]
     tool=opendiff

 [difftool]
     difftool=opendiff

我家里有一个空的.gitconfig。 我仍然可以使用opendiff -tool。 这是一个惊喜,因为它应该是不可能的。

Git的difftool设置如何在内部工作?

2 个答案:

答案 0 :(得分:5)

您可以看到complete setup using mergetool and difftool here

如果设置似乎仍处于活动状态,可能是因为它已在全局或您的帐户中设置,因为有三个文件git-config将搜索配置选项:

$GIT_DIR/config

特定于存储库的配置文件。 (文件名当然是相对于存储库根目录而不是工作目录。)

~/.gitconfig

特定于用户的配置文件。在Git的安装位置也称为“全局”配置文件:

$(prefix)/etc/gitconfig

系统范围的配置文件。


当您输入“git config”时,Git会将用户信息保存到您要保存的位置:

来自git config manual page

  

文件选项可以是--system--global--file之一,用于指定读取或写入值的位置。
  默认情况下,假定当前存储库的配置文件.git / config,除非使用GIT_DIRGIT_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-difftoolgit-mergetool提供了一些自动检测/自动发现(在一些固定的优先顺序)你可以使用哪些工具。

这个可能是“git difftool”在你的计算机上调用opendiff的原因。