一台机器配置多个Git账号

作为一条优秀的程序狗,不单单要完成公司的开发项目,自己也会有几个开发项目。

不同项目之间如果想使用不同的 Git 账号管理,我们就需要进行如下配置。

生成各自的 SSH key

不同的 Git 账号,区分使用不同的 SSH key。

生成用户名为 one_git_name 的 SSH key:

1
$ ssh-keygen -t rsa -C "one_git_name" -f ~/.ssh/one-key

生成用户名为 another_git_name 的 SSH key:

1
$ ssh-keygen -t rsa -C "another_git_name" -f ~/.ssh/another-key

配置对应的 SSH key

生成了不同的 SSH key 之后,来为不同的账号配置对应的 SSH key。

~/.ssh 目录下,新建 config 文件,在其中进行如下配置:

1
2
3
4
5
6
7
8
9
10
11
Host host-alias1(以后不同 Git 账号连接远程服务器时使用的别名,详见下面示例)
HostName github.com(对应 Git 服务提供商的域名)
User 登录用户名
Port 默认22,可不填(open-ssh 端口)
IdentityFile 私钥地址(例如:~/.ssh/one-key)

Host host-alias2(以后不同 Git 账号连接远程服务器时使用的别名,详见下面示例)
HostName github.com(对应 Git 服务提供商的域名)
User 登录用户名
Port 默认22,可不填(open-ssh 端口)
IdentityFile 私钥地址(例如:~/.ssh/another-key)

测试是否连通

1
$ ssh -T git@host-alias1(上面配置的 Git 远程服务商别名)

如果成功会有对应的提示,也可以 ssh -vT git@host-alias1 打出具体的 debug 信息,方便出错以后的调试。

配置本地 Git 账号

本地操作 Git 仓库的时候需要指定一个 Git 账号,可以配置一个全局的账号:

1
2
git config --global user.email "email@xx.com"
git config --global user.name "username"

也可以在不同的项目仓库配置不同的 Git 账号:

1
2
3
4
# 先进入对应的 Git 仓库文件夹中

git config user.email "email@xx.com"
git config user.name "username"

当然也可以直接修改不同 Git 仓库根目录下的 .git/config 文件:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 注意 [remote "origin"] 中的 url 这项配置
# [user] 就是上面在项目仓库目录下的 git config user.email/name 配置,这里我们不使用命令而是直接手动写入文件
[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
ignorecase = true
precomposeunicode = true
[remote "origin"]
url = git@host-alias1(就是之前我们在 .ssh/config 中配置不同 Git远程服务的别名):项目.git
fetch = +refs/heads/*:refs/remotes/origin/*
[branch "develop"]
remote = origin
merge = refs/heads/develop
[user]
email = email@xxx.com
name = username

OK,配置完毕,继续 coding …

P.S. 关注我的公众号,第一时间接收更新提醒。


公众号二维码