如果未配置user.name和user.email,则在Git中中止提交

时间:2017-02-04 03:15:21

标签: git

我在不同的机器上使用不同的用户名密集使用Git。有时,当我克隆存储库时,我忘记配置user.nameuser.email,当我第一次提交到没有指定标识名的本地存储库时,我得到了

Your name and email address were configured automatically based
on your username and hostname. Please check that they are accurate.
You can suppress this message by setting them explicitly:

    git config --global user.name "Your Name"
    git config --global user.email you@example.com

After doing this, you may fix the identity used for this commit with:

    git commit --amend --reset-author

是的,完全清楚Git是什么以及为什么这样说的。 (但是,如果我注意到它。)但是,是否可以抑制此类行为并使Git不将我的用户名和主机名传播为提交作者用户名?为什么我问的问题是我的[user] name =中没有[user] email =~/.gitconfig的意图:我只是为不同的存储库组使用不同的用户名和电子邮件,我想要Git如果它无法从配置中获取用户名和电子邮件,则中止提交。最糟糕的是我有一个自定义Git信息PS1配置显示当前存储库用户名和电子邮件权限,因为我有历史记录重写和强制推送几次甚至没有注意到用户名默认的巨大Git警告。 / p>

如果全局未指定user.nameuser.email,是否可以在Git中中止提交? (我想它可以通过钩子修复,但钩子只是局部的,对吧?)

2 个答案:

答案 0 :(得分:6)

是的,user.useConfigOnly

git config --global user.useConfigOnly true

来自git-config(1)

  

指示Git避免尝试猜测user.emailuser.name的默认值,而是检索              仅来自配置的值。例如,如果您有多个电子邮件地址并且愿意              为每个存储库使用不同的存储库,然后在全局范围内将此配置选项设置为true              配置名称,Git将提示您在新提交之前设置电子邮件              克隆的存储库。默认为false。

答案 1 :(得分:0)

如果您希望git clone根据远程网址自动初始化user.email和user.name:https://github.com/DrVanScott/git-clone-init