在工作中,我们有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.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.name
和user.email
。
是否无法在全球范围内匹配用户名和电子邮件?或者我在这里做错了什么?
如果需要,我可以直接更新每个仓库的名称和电子邮件,但我希望有更全面的解决方案。
谢谢!
答案 0 :(得分:2)
git不允许您使用网址匹配来设置user.name
和user.email
设置。
网址匹配通常仅限于涉及与远程服务器交互的设置,例如http.*
和credential.*
设置。如果您运行git config --help
,则可以查看哪些设置允许此操作,因为它们已记录在<url>
组件中。
原因是git在设置非远程设置时不考虑克隆或推送URL。
但是,您可以基于每个存储库设置这些。如果要自动执行此操作,可以在克隆时通过为每个用户设置具有相应配置文件(请参阅git init --help
)的模板目录并在克隆时使用--template
选项来设置它们。如果您愿意,可以将其推送到别名中。