我有单独的电子邮件地址,我用于工作项目和开源项目,我想确保我为每种类型的项目使用正确的.
显然,解决方案是适当地设置存储库特定的配置,遗憾的是我一直忘记设置它,直到我进行了一些提交,因此使用全局user.email配置,如果这与我的匹配,这很好工作,但不是那么好.
如果没有在任何地方设置user.email,那么只需要将本地用户名和主机连接在一起就可以了(对桌面机器来说不是很棒); 我希望它只是阻止提交.我不认为钩子会起作用,因为我希望这会发生在新的和克隆的repos上 - 如果我手动将钩子复制到repo中,我应该设置配置.
Von*_*onC 23
新更新(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Ç滨野- -在提交c37f9a1 2月17日2016)da-xsunshinecopeffsunshineco
gitster
ident:user.useConfigOnly为ident不应该猜到的时候添加布尔值它曾经是这样的:
git config --global user.email "(none)"
Run Code Online (Sandbox Code Playgroud)
是人们强迫自己设置
user.email在每个存储库中的可行方式.
这对于拥有多个电子邮件地址的人有用,针对不同的克隆定位不同的电子邮件地址,因为它禁止git创建提交,除非user.email配置在per-repo配置中设置为正确的电子邮件地址.最近的变化,19ce497(
ident:保持一个标志虚假default_email,2015年12月10日进行的git 2.6.5 1月2016),然而,宣布一个明确的配置user.email是不是假的,不管它的价值是什么,所以这黑客不再有效.通过添加新配置变量提供相同的功能
user.useConfigOnly; 设置此变量时,用户必须显式设置user.email配置.
所以从2016年3月开始和git 2.8,做:
git config --global user.useConfigOnly true
Run Code Online (Sandbox Code Playgroud)
您的任何新回购user.email 只会在其本地.git/config文件中查找.
如果user.email在本地git配置中找不到,则提交将不会继续.
请注意,它将在git 2.9(2016年6月)中进一步增强:
请参阅Marios Titas("`")提交d3c06c1,提交734c778(2016年3月30日).
(由Junio C gitsterHamano合并- -在提交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
Run Code Online (Sandbox Code Playgroud)
你会看见:
no name was given and auto-detection is disabled
no email was given and auto-detection is disabled
Run Code Online (Sandbox Code Playgroud)
原始答案(2012年9月)
有点像" 使用预提交挂钩停止特定作者的git提交 ",您可以定义一个默认的预提交挂钩,检查是否:
git config --local user.email
Run Code Online (Sandbox Code Playgroud)
是空的.
如果是空的:exit 1
要确保您为正在创建的每个repo使用该默认挂钩,请参阅" 更改默认git挂钩 ".
它与" 分享你的git hooks "中描述的方法类似:
| 归档时间: |
|
| 查看次数: |
2336 次 |
| 最近记录: |