强制Git用户在工作副本中设置电子邮件地址

时间:2018-04-05 11:22:22

标签: git git-config

显然,可以使用以下gitconfig设置强制Git用户为每个新存储库添加电子邮件地址:

git config --global user.email "(none)"
git config --global user.useConfigOnly true

我做过的。我的gitconfig -l输出(截断):

core.symlinks=true
core.autocrlf=true
core.fscache=true
color.diff=auto
color.status=auto
color.branch=auto
color.interactive=true
help.format=html
diff.astextplain.textconv=astextplain
rebase.autosquash=true
http.sslcainfo=C:/Program Files/Git/mingw64/ssl/certs/ca-bundle.crt
diff.astextplain.textconv=astextplain
filter.lfs.clean=git-lfs clean -- %f
filter.lfs.smudge=git-lfs smudge -- %f
filter.lfs.required=true
filter.lfs.process=git-lfs filter-process
credential.helper=manager
core.autocrlf=true
core.eol=native
user.name=David Wright
user.email=(none)
user.useconfigonly=true

但它似乎没有起作用。我可以在不设置电子邮件地址的情况下提交。提交中列出的电子邮件地址(哦,不知道)是"(无)"。

我正在使用git version 2.13.0.windows.1

我想这样做是因为我在同一台计算机上使用了两个不同的帐户。我能够在我的ssh-config文件中实现类似的设置来应用不同的ssh-key:

# github account
Host github.com
Port 22
HostName github.com
User git
IdentityFile <file>

但显然git本身没有这种可能性。

无论如何,我希望能够强制我必须为每个存储库设置用户电子邮件地址,我希望这是我的全局 gitconfig的一部分。我知道有可能使用预提交钩子,但据我所知,这个钩子需要在克隆后复制到每个仓库,这不是我正在寻找的。

1 个答案:

答案 0 :(得分:3)

documentation of git config解释说:

  

<强> user.useConfigOnly

     

指示Git避免尝试猜测user.emailuser.name的默认值,而只是从配置中检索值。例如,如果您有多个电子邮件地址并希望为每个存储库使用不同的电子邮件地址,那么在全局配置中将此配置选项设置为true以及名称,Git将提示您设置在新克隆的存储库中进行新提交之前的电子邮件。默认为false

在类Unix系统(Linux,macOS等)上,当未设置user.email时,Git会尝试通过连接操作系统用户名@和主机名来生成电子邮件地址。 / p>

通过将user.useConfigOnly设置为true,此行为将被取消,Git仅使用configuration files中找到的user.email值,如果有的话。

由于您已将(none)配置为user.email,因此Git将其用作提交者电子邮件地址。

使用git config --global --unset user.email删除它,Git会开始要求您输入一个电子邮件地址(或至少会抱怨user.email没有设置),因为每个存储库(新的或现有的)都没有设置user.email