0%

git多账号管理

你可能和我一样有过这样的苦恼:一台电脑上已经全局配置了公司的git账号管理公司项目代码,同时自己平时的一些开源代码又想同步至自己的github上。如果要提交或拉代码的时候再临时修改配置,不仅操作成本很高,而且容易出错。今天就来记录下一次性配置的方法。

我使用的是windows系统,我把所有的公司项目代码都放在了D:/work/文件夹中,所有的个人项目代码都放在了D:/personal/文件夹中。然后在git配置文件中使用conditional includes搭配其它配置,即可实现多账号管理。

gitconfig

C:/Users/用户名/.gitconfig文件原始是只设置了公司的git用户名和邮箱

1
2
3
[user]
name = 用户名
email = 邮箱

改成条件引入

1
2
3
4
5
6
7
- [user]
- name = 用户名
- email = 邮箱
+ [includeIf "gitdir:D:/work/"]
+ path = .gitconfig-work
+ [includeIf "gitdir:D:/personal/"]
+ path = .gitconfig-personal

然后新建下面两个文件用来放公司和个人的用户名邮箱,这样在D:/work/目录下会使用公司账号配置,在D:/personal/目录下会使用个人账号配置

C:/Users/用户名/.gitconfig-work

1
2
3
[user]
name = 公司用户名
email = 公司邮箱

C:/Users/用户名/.gitconfig-personal

1
2
3
[user]
name = 个人用户名
email = 个人邮箱

ssh

运行下面两个命令分别生成公司和个人的ssh。-f可以指定生成的文件名,gitlab_id_rsa是公司的,github_id_rsa是个人的。

1
2
3
4
# 公司ssh
ssh-keygen -f c:/Users/用户名/.ssh/gitlab_id_rsa -t rsa -C 公司邮箱
# 个人ssh
ssh-keygen -f c:/Users/用户名/.ssh/github_id_rsa -t rsa -C 个人邮箱

完成后会得到下面的文件:

id_rsa

其中,gitlab_id_rsa.pubgithub_id_rsa.pub分别是公司和个人的公钥,我们需要复制其文本内容到公司gitlab及github的ssh设置页把对应的公钥提交上去。

gitlab ssh keys

github ssh keys

新建C:/Users/用户名/.ssh/config文件,内容如下:

1
2
3
4
5
6
7
8
9
10
11
# github.com
Host github.com
HostName github.com
IdentityFile C:\\Users\\用户名\\.ssh\\github_id_rsa
PreferredAuthentications publickey

# 公司git域名
Host 公司git域名
HostName 公司git域名
IdentityFile C:\\Users\\用户名\\.ssh\\gitlab_id_rsa
PreferredAuthentications publickey

至此,git多账号管理配置完成。