我有单独的电子邮件地址,我用于工作项目与开源项目,我想确保为每种类型的项目使用正确的电子邮件地址。
显然,解决方案是适当地设置存储库特定的配置,遗憾的是我一直忘记设置它,直到我提交了几个提交,因此使用全局user.email配置,如果匹配的话,这很好我正在努力,但不是那么好。
如果没有在任何地方设置user.email,那么只需要将本地用户名和主机放在一起就可以创建一个(桌面计算机不是那么棒);我希望它只是阻止提交。我不认为挂钩会起作用,因为我希望这种情况发生在新的& cloned repos - 如果我手动将钩子复制到repo中,我应该设置配置。
答案 0 :(得分:22)
新更新(2016年2月,适用于git 2.8)
git 2。8(2016年3月)将添加一个新的解决方案:
commit 4d5c295见Dan Aloni (da-x
)(2016年2月6日)
帮助:Eric Sunshine (sunshineco
)。
请commit 59f9295查看Jeff King (peff
)(2016年2月4日)
帮助:Eric Sunshine (sunshineco
)。
(Junio C Hamano -- gitster
--在2016年2月17日commit c37f9a1合并)
ident
:添加user.useConfigOnly
布尔值,以便{@ 1}}不应该被猜到过去是这样的:
ident
是人们强迫自己设置
git config --global user.email "(none)"
的可行方式 每个存储库。
这对于拥有多个电子邮件地址的人有用,针对不同的克隆定位不同的电子邮件地址,因为它禁止git创建提交,除非在每个repo配置中将user.email
配置设置为正确的电子邮件地址。最近的更改19ce497(
user.email
:保留虚假标志 然而,default_email,2015-12-10 for git 2.6。5,2016年1月),声明明确配置的ident
不虚假,无论它的值是什么,所以这个黑客不再有效。通过添加新的配置变量
user.email
来提供相同的功能;设置此变量时, 用户必须明确设置user.email配置。
从2016年3月开始,git 2.8,请执行:
user.useConfigOnly
您的任何新回购邮件都会在其本地git config --global user.useConfigOnly true
文件中查找user.email
。
如果在本地git配置中找不到.git/config
,则提交将不会继续。
请注意,它将在git 2。9(2016年6月)中进一步增强:
commit d3c06c1见commit 734c778,Marios Titas (``)(2016年3月30日)
(由Junio C Hamano -- gitster
--合并于commit e7e6826,2016年4月29日)
user.email
:在自动检测姓名/电子邮件之前检查ident
如果设置了
useConfigOnly
,则尝试自动检测名称和/或电子邮件是没有意义的。
自动检测甚至可能导致伪名称并触发错误消息。上给出“请告诉我”消息
user.useConfigOnly
:在ident
错误使用描述性较差的错误消息来阻止用户禁用
useConfigOnly
配置变量来解决此错误情况。我们希望鼓励他们设置user.name或user.email。
所以而不是:
user.useConfigOnly
你会看到:
user.useConfigOnly set but no name given
user.useConfigOnly set but no mail given
原始答案(2012年9月)
有点像“Stop a git commit by a specific author using pre-commit hook”,您可以定义默认预提交挂钩,检查是否:
no name was given and auto-detection is disabled
no email was given and auto-detection is disabled
是否为空。
如果为空: git config --local user.email
要确保您为正在创建的每个仓库使用该默认挂钩,请参阅“change default git hooks”。
它与“Share your git hooks”中描述的方法类似:
答案 1 :(得分:1)
我刚刚发现了一个黑客/解决方法,只需将默认的全局电子邮件设置为(none)
,如下所示:
git config --global user.email "(none)"
小解释:此解决方法取决于官方git客户端源代码中的当前电子邮件验证,因此请自行承担风险。