当前位置:  开发笔记 > 编程语言 > 正文

根据远程克隆URL,为Git config使用不同的user.email和user.name

如何解决《根据远程克隆URL,为Gitconfig使用不同的user.email和user.name》经验,为你挑选了1个好方法。

我配置我的全局~/.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在本例中)的存储库将以某种方式配置?



1> mkobit..:

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.emailuser.name进行设置.以下是Github链接博客文章中的相关文字:

但是,如果您希望Git为您的开源项目使用一个电子邮件地址而为您的工作项目使用另一个电子邮件地址,那么毫无疑问,如果没有先将您的电子邮件地址设置为库.在这种情况下,Git会发出警告,但无论如何都会使用从本地系统主机名猜测的电子邮件地址创建提交.如果你想为不同的项目做一些像不同地址一样复杂的事情,这几乎肯定不是你想要的.

现在您可以告诉Git不要猜测,而是坚持在允许您提交之前明确设置user.name和user.email:

git config --global user.useconfigonly true

这不能解决基于某些克隆URL的自动配置,但通过在开始时强制配置确实使该过程不易出错.

推荐阅读
喜生-Da
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有