我配置我的全局~/.gitconfig
属性user.name
,user.email
像这样:
git config --global user.email "mkobit@example.com" git config --global user.name "mkobit"
这是我想要处理个人项目,开源资料等的默认配置.
当我正在处理来自特定域(例如公司域)的项目时,我在克隆它时为每个存储库配置它,以便它使用不同的user.name
/ user.email
:
git clone ssh://git@git.mycorp.com:1234/groupA/projectA.git cd projectA git config user.email "mkobit@mycorp.com" git config user.name "m.kobit"
一个不错的选择是设置别名来克隆这些类型的存储库:
git config --global alias.clonecorp 'clone \ -c user.name="m.kobit" -c user.email="mkobit@mycorp.com"' git clonecorp ssh://git@git.mycorp.com:1234/groupA/projectA.git
这两者都可能容易出错,因为它们都依赖于我的聪明并遵循正确的步骤.有证据表明,这种情况几乎可以保证在某个时候搞砸了.
有没有办法配置Git,以便某个域(mycorp.com
在本例中)的存储库将以某种方式配置?
Git 2.13的发布引入了一个名为条件包含的功能.在2.13中,唯一支持的配置是文件系统路径.在这种情况下,这很容易使用,因为我已经把它们分开了.
发行说明中提供的示例是:
您可以在主目录的
~/.gitconfig
文件中配置两个条件包含:[includeIf "gitdir:~/work/"] path = .gitconfig-work [includeIf "gitdir:~/play/"] path = .gitconfig-play现在,您可以将所需的任何选项放入这些文件中:
$ cat ~/.gitconfig-work [user] name = Serious Q. Programmer email = serious.programmer@business.example.com $ cat ~/.gitconfig-play [user] name = Random J. Hacker email = rmsfan1979@example.com
老答案
在Git 2.8中,user.useconfigonly
添加了一个全局配置,它坚持要求用户在提交之前设置它们user.email
并user.name
进行设置.以下是Github链接博客文章中的相关文字:
但是,如果您希望Git为您的开源项目使用一个电子邮件地址而为您的工作项目使用另一个电子邮件地址,那么毫无疑问,如果没有先将您的电子邮件地址设置为库.在这种情况下,Git会发出警告,但无论如何都会使用从本地系统主机名猜测的电子邮件地址创建提交.如果你想为不同的项目做一些像不同地址一样复杂的事情,这几乎肯定不是你想要的.
现在您可以告诉Git不要猜测,而是坚持在允许您提交之前明确设置user.name和user.email:
git config --global user.useconfigonly true
这不能解决基于某些克隆URL的自动配置,但通过在开始时强制配置确实使该过程不易出错.