git 中的作者/提交者数据不尊重GIT_CONFIG变量



我有一个全局~/.gitconfig文件,其中我指定了用户电子邮件和用户名(我不使用系统范围文件):

[user]
name = Name Surname
email = test1@domain.com

可以工作并正确设置提交者和作者的详细信息。当我使用GIT_CONFIG变量指向内容为

的文件定义特定的git配置时,问题开始出现:
[user]
name = Other Surname
email = test2@domain.com

所以在这种情况下,我有~/.gitconfig/home/user/directory/.gitconfig文件。后者应该优先,因为它是由GIT_CONFIG变量指向的。这似乎可以作为git config user.email显示预期值:

$ export GIT_CONFIG=/home/user/directory/.gitconfig
$ git config user.email
test2@domain.com

看到我期望在某些存储库中执行提交(如上段所示导出GIT_CONFIG)将以作者/提交者设置为Other Surname <test2@domain.com>的提交结束,但我看到的是Name Surname <test1@domain.com>

综上所述,git config显示的是期望值(相对于GIT_CONFIG),而git commit使用的是全局配置文件中的值。

覆盖GIT_AUTHOR_*GIT_COMMITTER_*按预期工作,但我不明白为什么在这种情况下git commit不接受git config返回的值(不尊重GIT_CONFIG变量)。我做错了什么?;)

我从来没有真正理解过GIT_CONFIG变量的用例,1.8.2版本指出(那是七年前)说

  • 我们不再关注$GIT_CONFIG环境指向从任何命令中获取单个配置文件,而不是"git config";很久以前了,但是"克隆"了。内部设置、导出和然后在不必要的操作过程中取消导出变量。

git config上的-f选项是我一直用来读取或更新配置格式文件的。

编辑:

覆盖GIT_AUTHOR_*GIT_COMMITTER_*工作正常

那么就这么做。您还可以使用特定于repo的配置,甚至是条件包含。

我不确定有任何理由为什么GIT_CONFIGvar不应该工作,没有理由让它工作,它只是有点在那里。有些人可能会烦到打补丁说它已经被弃用了,但在那之前,我想说它只是一个没人喜欢的不需要的功能的残余。

最新更新