新更新(2016 年 2 月,适用于 git 2.8)
git 2.8(2016 年 3 月)将添加一个新的解决方案:
请参阅Dan Aloni ( )的提交 4d5c295(2016 年 2 月 6 日) 。
帮助者:Eric Sunshine ( )。
请参阅Jeff King ( )的提交 59f9295(2016 年 2 月 4 日) 。
帮助者:Eric Sunshine ( )。(由Junio C Hamano 合并 -- --在提交 c37f9a1中,2016 年 2 月 17 日)da-x
sunshineco
peff
sunshineco
gitster
ident
:为不应该猜到的时间添加user.useConfigOnly
布尔值ident
以前是这样的:
git config --global user.email "(none)"
是人们强迫自己user.email
在每个存储库中设置的一种可行方式。
这对于拥有多个电子邮件地址的人很有帮助,针对不同的克隆定位不同的电子邮件地址,因为它禁止 git 创建提交,除非user.email
在 per-repo 配置中将配置设置为正确的电子邮件地址。
然而,最近的更改19ce497 ( ident
: keep a flag for bogus default_email, 2015-12-10 for git 2.6.5, Jan. 2016) 声明显式配置不是user.email
伪造的,无论其值是什么,所以这个hack 不再有效。
通过添加新的配置变量来提供相同的功能user.useConfigOnly
;设置此变量时,用户必须显式设置 user.email 配置。
因此,从 2016 年 3 月和 git 2.8 开始,请执行以下操作:
git config --global user.useConfigOnly true
您的任何新仓库都user.email
只会在其本地.git/config
文件中查找。如果在本地 git 配置中找不到,
则提交将不会继续。user.email
请注意,它将在 git 2.9(2016 年 6 月)中得到更多增强:
请参阅提交 d3c06c1,提交 734c778(2016 年 3 月 30 日)由Marios Titas (``)。
(由Junio C Hamano 合并 -- gitster
--在提交 e7e6826中,2016 年 4 月 29 日)
ident
:useConfigOnly
在自动检测姓名/电子邮件之前检查
如果user.useConfigOnly
已设置,则尝试自动检测名称和/或电子邮件是没有意义的。
自动检测甚至可能导致虚假名称并触发错误消息。
ident
useConfigOnly
:出错时给出“请告诉我”消息
使用描述性较差的错误消息来阻止用户禁用user.useConfigOnly
配置变量以解决此错误情况。我们希望鼓励他们改为设置 user.name 或 user.email。
所以而不是:
user.useConfigOnly set but no name given
user.useConfigOnly set but no mail given
你会看见:
no name was given and auto-detection is disabled
no email was given and auto-detection is disabled
原始答案(2012 年 9 月)
有点像“使用预提交钩子停止特定作者的 git 提交”,你可以定义一个默认的预提交钩子来检查:
git config --local user.email
是否为空。
如果为空:exit 1
要确保您为正在创建的每个 repo 使用该默认挂钩,请参阅“更改默认 git 挂钩”。
这是一种类似于“分享你的 git hooks ”中描述的方法: