【问题标题】:Unable to understand how Git's difftool configs are set无法理解 Git 的 difftool 配置是如何设置的
【发布时间】:2010-11-07 00:14:20
【问题描述】:

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

 [merge]
     tool=opendiff

 [mergetool]
     tool=opendiff

 [difftool]
     difftool=opendiff

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

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

【问题讨论】:

  • 刚刚更新了我对更新 git 设置时选择的 git 配置文件的回答。
  • 刚刚用 Mac OsX 的前缀值更新了我的答案
  • 我的 git 外部差异工具设置记录在:stackoverflow.com/questions/267761/… 这可能会有所帮助。如果您还想要该答案包含的脚本作为读者练习,请告诉我。我这样做是因为它非常特定于 Araxis Merge。
  • @Mark:请给我看看 Araxis Merge 特有的脚本。

标签: git macos difftool


【解决方案1】:

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

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

$GIT_DIR/config

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

~/.gitconfig

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

$(prefix)/etc/gitconfig

系统范围的配置文件。


Git 会在您输入“git config”时将用户信息保存在您所说的任何位置:

来自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

【讨论】:

  • @VonC:如何更改 Git 保存用户信息的设置? --- 我的旧 Git 将所有内容保存到 .gitconfig。我当前的 Git 将所有内容保存到 $GIT_DIR/config。
  • @VonC:$(prefix)/etc/gitconfig 文件夹在哪里?我在我的 OS/X 中没有找到它。
  • @Masi,哦,默认的 Unix 目录,但我会检查 Mac 的翻译位置
  • @VonC: [---] 是 Git 中的注释,因此我只能在 .gitconfig 中使用 % tool=opendiff % 一次吗?
【解决方案2】:

您还(除了记住 Git 搜索配置的许多地方,如 response by VonC 中所述)要记住 git-difftoolgit-mergetool 都提供了一些自动检测/自动发现(以某些固定的优先顺序)您可以使用哪些工具。

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

【讨论】:

  • +1。我试图在脚本“git-merge-tool”中检查可能会发生默认自动检测设置的地方,但乍一看没有找到任何东西。你知道自动检测是脚本化的,还是在某个 git 可执行文件中?
  • @VonC: 检查 'git-mergetool--lib' 中的 'guess_merge_tool' 函数(在 "git --exec-dir" 中)。
猜你喜欢
  • 2022-11-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-09
  • 2016-03-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多