我有一个全局~/.gitconfig
文件,其中我指定了用户电子邮件和用户名(我不使用系统范围文件):
[user]
name = Name Surname
email = test1@domain.com
可以工作并正确设置提交者和作者的详细信息。当我使用GIT_CONFIG
变量指向内容为
[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_CONFIG
var不应该工作,没有理由让它工作,它只是有点在那里。有些人可能会烦到打补丁说它已经被弃用了,但在那之前,我想说它只是一个没人喜欢的不需要的功能的残余。