相信大家在使用git的时候会面临这样的场景,同时拥有隶属于多个git服务的账户比如github,gitlab的代码工程,如何保证在不同的工程使用不同的账户呢?下面介绍两种常见方案。
方案一:针对项目配置git
git的配置变量可以放在三个地方:
- /etc/gitconfig 系统配置,对所有用户都生效。
- ~/.gitconfig 用户配置,仅对当前用户生效。
- xxx/.git/config 项目配置,仅对当前项目生效。
如果同时配置则逐级覆盖,为了解决上述方案,我们可以针对不同的项目配置不同的用户,修改代码工程目录下的.git/confg文件加入用户信息配置即可,如下:
[user]
name = 竹涧
email = zeqiang.yzq@alibaba-inc.com
该方案有明显缺点:
- 工程较多时配置繁琐。
- 代码文件删除后需要重新配置。
下面我们来介绍一种一劳永逸的方案~
方案二:按照工作目录配置git
大概是17年中,git发布的新版本开始支持不同文件目录使用不同的配置文件,且共享用户配置,下面是我个人的gitconfig文件:
[core]
excludesfile = /Users/yzq/.gitignore
autocrlf = input
editor = /usr/bin/vim
[push]
default = simple
[includeIf "gitdir:~/Code/github/"]
path = .gitconfig-github
[includeIf "gitdir:~/Code/work"]
path = .gitconfig-work
[commit]
template = ~/.gitmessage
[user]
name = 竹涧
email = zeqiang.yzq@alibaba-inc.com
该配置对我个人账户下所有的git工程生效,效果如下:
- ~/Code/github/ 目录下的所有git工程使用 .gitconfig-github配置。
- ~/Code/work/ 目录下的所有git工程使用 .gitconfig-work配置
接下来让我们看一下这两个配置的内容:
.gitconfig-work
[user]
name = 竹涧
email = zeqiang.yzq@alibaba-inc.com
.gitconfig-github
[user]
name = yzq
email = yangzeqiang@gmail.com
仅仅配置了账户信息,通过一次性配置即可保证不同目录使用不同的git配置!(上述仅仅配置实现了不同文件目录不同的git账户,其它配置项目同样适用比如commit template,editor等。)