2

在工作中,我们有 Github Enterprise,但有时我也会从公共的 Github.com 中提取。我需要将我的工作作者信息用于任何 Github Enterprise 活动,但我不想在更新我已经有活动的 Github.com 存储库时将我的工作凭据与我的个人凭据混淆。


作为比较,我能够成功地根据 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 中时才会使用代理。

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

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

user.name因此,我也尝试了上述方法user.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.

不能全局匹配用户名和电子邮件吗?还是我在这里做错了什么?

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

谢谢!

4

1 回答 1

3

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

URL 匹配通常仅限于那些涉及与远程服务器交互的设置,例如http.*credential.*设置。如果您运行git config --help,您可以看到哪些设置允许这样做,因为它们与<url>组件一起记录。

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

但是,您可以在每个存储库的基础上设置这些。如果您想自动执行此操作,您可以在克隆时设置它们,git init --help方法是为每个用户设置一个包含适当配置文件(请参阅 参考资料)的模板目录,并--template在克隆时使用该选项。如果您愿意,可以将其推入别名中。

于 2017-10-01T20:55:30.013 回答