如果你拥有2个或以上的github账号且需要在同一个电脑上进行git操作,下面是我亲测有效的配置流程。

具体步骤如下:

  1. 针对不同github账号甚至不同的repository生成ssh-key,并添加到电脑中
  2. 配置ssh-key_pub内容到github账号或项目中。
  3. 配置电脑.ssh的config文件
  4. git操作注意事项

1. 生成ssh-key

在terminal使用以下指令生成新的ssh_key。github推荐的是ed25519的方式,如果是老电脑或系统不支持,可以用第2条命令。

1
2
ssh-keygen -t ed25519 -C "your_email"
ssh-keygen -t rsa -b 4096 -C  "your_email"

在提示保存位置时,要输入完整的路径,比如:/Users/bing/.ssh/id_ed25519_alias。其中alias用来区别不同账号或者项目的ssh key。

生成后添加ssh key。

ssh-add ~/.ssh/id_ed25519_alias
ssh-add ~/.ssh/id_ed25519_alias2

如果要删除之前添加过的key,则运行ssh-add -D

查看已经添加的ssh key,运行ssh-add -l

2. 配置ssh key到账号或项目中

如果key用于账号级别,则前往github个人中心-Settings-SSH and GPG Keys界面添加Key;若key用于项目界面,则前往Github项目页面-Settings-Deploy Keys界面添加。

打开ssh key对应的pub文件,内容一般以ssh-ed25519ssh-rsa等开头。

vim ~/.ssh/id_ed25519_alias.pub

复制里面的内容,在添加Key的界面添加保存即可。

3. 配置ssh config

打开~/.ssh/config文件,若没有则新建一个。

vim ~/.ssh/config

将以下内容配置进去。请注意里面的Host就是后面实际git操作时要用到的。

# alias account
Host github.com-alias
        HostName github.com
        User git
        IdentityFile ~/.ssh/id_ed25519_alias

#alias1 account
Host github.com-alias1
        HostName github.com
        User git
        IdentityFile ~/.ssh/id_ed25519_alias1

这里不能将多个key的Host都设置为github.com,设置后只有第一个生效。

4. git操作注意事项

在本地项目文件夹里,设置项目的git config。

git config user.name "alias"
git config user.email "alias@example.com" 

也可以设置一个全局的,这样不需要每个项目文件都进行配置

git config --globals user.name "alias"
git config --globals user.email "alias@example.com" 

下面就是具体的git操作,只有一点需要注意,就是把原始的github项目的ssh链接进行替换。

  • 原始链接:git@github.com:username/some.git
  • 修改链接:git@github.com-alias:username/some.git

比如我们试着进行一下git pull操作。

git pull git@github.com-alias:username/some.git

如果是在自带Git功能的IDE里,也需要去修改下里面的git远程链接。修改本地项目的远程链接:

git remote set-url origin git@github.com-alias:username/some.git

参考文档:

  1. https://gist.github.com/jexchan/2351996