我可以根据URL使用不同的作者信息进行Git repo

时间:2017-09-27 15:56:03

标签: git github repository github-enterprise

在工作中,我们有Github Enterprise,但有时我也会从公众Github.com上撤下。我需要将我的工作作者信息用于任何Github Enterprise活动,但在更新我已经开展活动的Github.com repos时,我不想将我的工作凭证与我的个人凭据混淆。

作为比较,我能够根据URL成功设置不同的代理信息,如下所示:

git config --global http.https://github.com.proxy http://<myworkproxy:port>
git config --global https.https://github.com.proxy http://<myworkproxy:port>

仅当https://github.com位于远程网址时才会使用代理。

这可以通过输入真正的远程URL来验证,如下所示,Git将吐出要使用的代理:

git config --url-match https.proxy https://github.com/<rest of repo URL>

所以,我也尝试了user.nameuser.email的上述内容:

git config --global user.https://github.com.name <My Github.com user name>
git config --global user.https://github.com.email <My Github.com user email>

这会检查我的全局配置文件(使用git config --global -e在编辑器中将其拉出来),所有内容似乎都设置正确:

[user]
    name = <My work user name>
    email = <My work user email>
[user "https://github.com"]
    name = <My github.com user name>
    email = <My github.com user email>

即使我使用git config --url-match user.name https://github.com/<rest of repo URL>,它也会显示github.com用户名而不是工作用户名,因此过滤工作正常。

但是,当我使用git(无论是从GUI还是直接在命令行上)时,它仍然总是使用我的工作user.nameuser.email

是否无法在全球范围内匹配用户名和电子邮件?或者我在这里做错了什么?

如果需要,我可以直接更新每个仓库的名称和电子邮件,但我希望有更全面的解决方案。

谢谢!

1 个答案:

答案 0 :(得分:2)

git不允许您使用网址匹配来设置user.nameuser.email设置。

网址匹配通常仅限于涉及与远程服务器交互的设置,例如http.*credential.*设置。如果您运行git config --help,则可以查看哪些设置允许此操作,因为它们已记录在<url>组件中。

原因是git在设置非远程设置时不考虑克隆或推送URL。

但是,您可以基于每个存储库设置这些。如果要自动执行此操作,可以在克隆时通过为每个用户设置具有相应配置文件(请参阅git init --help)的模板目录并在克隆时使用--template选项来设置它们。如果您愿意,可以将其推送到别名中。