利用 .gitconfig
的 includeIf
语句匹配不同的远程仓库url切换 user
配置 gitconfig
在 ~/.gitconfig
同目录下创建多个 .gitconfig.<你希望的名称>
配置文件。
在配置文件里写入以下内容:
txt
[user]
name = <your name>
email = <your email>
以github 和 gitee 举例,我希望在这两个 remote 中提交代码使用不同的 user(真实场景应该是公司内部仓库应该使用真实名字提交)
txt
[includeIf "hasconfig:remote.*.url:git@github.com:**/**/"]
path = ~/.gitconfig.<你希望的名称>
[includeIf "hasconfig:remote.*.url:*gitee.com**/**/*"]
path = ~/.gitconfig_gitee.<你希望的名称2>
如果习惯使用 http
链接拉取仓库,则需要这样写:
txt
[includeIf "hasconfig:remote.*.url:https://github.com/**"]
path = ~/.gitconfig.<你希望的名称>
[includeIf "hasconfig:remote.*.url:https://gitee.com/**"]
path = ~/.gitconfig_gitee.<你希望的名称2>
当然也可以同时把这几条都写上去。
includeIf
不支持条件或之类的语法,只能一条一条写。
进入到对应remote的代码仓库中,使用以下命令可以确认配置是否生效:
bash
git config user.name # 输出对应的user则代表成功
注意事项
了解过 gitconfig 文件的语法后,你可能会希望这样写:
txt
[includeIf "hasconfig:remote.*.url:git@github.com:**/*"]
[user]
name = <your name>
email = <your email>
[includeIf "hasconfig:remote.*.url:*gitee.com**/*"]
[user]
name = <your name2>
email = <your email2>
这是不行的哦,会默认使用最后一个 user。