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

Léo*_* 준영 2 git macos difftool

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

 [merge]
     tool=opendiff

 [mergetool]
     tool=opendiff

 [difftool]
     difftool=opendiff
Run Code Online (Sandbox Code Playgroud)

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

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

Von*_*onC 5

您可以在此处使用mergetool和difftool查看完整设置.

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

$GIT_DIR/config
Run Code Online (Sandbox Code Playgroud)

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

~/.gitconfig
Run Code Online (Sandbox Code Playgroud)

用户特定的配置文件.在Git的安装位置也称为"全局"配置文件:

$(prefix)/etc/gitconfig
Run Code Online (Sandbox Code Playgroud)

系统范围的配置文件.


当您输入' git config' 时,Git会将用户信息保存在您要保存的任何位置:

git config手册页:

file-option可以是其中之一--system,--global--file可以指定读取或写入值的位置.
默认情况下,假定当前存储库的配置文件,.git/config,除非使用GIT_DIR和另外定义GIT_CONFIG.

您可以通过命令行选项或环境变量覆盖这些规则.在--global--system选项将限制分别用于全球或全系统文件的文件.
GIT_CONFIG环境变量有类似的效果,但您可以指定任何你想要的文件名.

您可能在之前的安装中设置了该环境变量吗?

GIT_CONFIG
Run Code Online (Sandbox Code Playgroud)

从给定文件中取出配置而不是.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
Run Code Online (Sandbox Code Playgroud)