【Git】同时在本地使用多个github账号进行github仓库管理
【Git】同时在本地使用多个github账号进行github仓库管理
背景
本地有多个均需要使用的github账号情况,如:项目A(远程仓库A)使用github账号A、项目B(远程仓库B)使用github账号B,项目A和项目B需要同时推进。此时为了维持两个项目开发的需要,需要在本地频繁切换不同github账号。接下来介绍一个”一劳永逸“的方法,在同时开发两个项目的同时避免在本地频繁切换不同github账号。
避免频繁切换账号——在本地使用SSH进行多账号配置
原理
1、在本地为每个github账号生成SSH key
ssh-keygen -t rsa -b 4096 -f ~/.ssh/id_rsa_a -C "xxxx@163.com"
ssh-keygen -t rsa -b 4096 -f ~/.ssh/id_rsa_b -C "xxxx@gmail.com"
此时会生成~/.ssh/id_rsa_a
和~/.ssh/id_rsa_a.pub
、~/.ssh/id_rsa_b
和~/.ssh/id_rsa_b.pub
。
邮箱是github账号的邮箱。
2、在github账号上添加各自的本地公钥
在github登录账号A → Settings → SSH and GPG keys → New SSH key → 贴上 id_rsa_a.pub
内容
在github登录账号B → Settings → SSH and GPG keys → New SSH key → 贴上 id_rsa_b.pub
内容
3、在本地配置 .ssh/config文件
编辑或创建.ssh/config文件:
nano ~/.ssh/config
在config文件中添加如下内容,不同【github账号】对应不同的【自定义Host】,让本地能够通过【目标Host名称】识别到要【使用哪个github账号】对目标远程仓库进行操作:
# 账号A的配置
Host github-aHostName github.comUser gitIdentityFile ~/.ssh/id_rsa_a# 账号B的配置
Host github-bHostName github.comUser gitIdentityFile ~/.ssh/id_rsa_b
Host的名称可以自行修改、更有辨识度。
4、在本地用自定义Host添加远程仓库
本地进入项目A所在文件夹,执行如下命令:
git remote set-url <项目A的远程仓库名> git@github-a:your-username-a/your-repo.git
注意:用的是
git@github-a:
而不是git@github.com:
,指向.ssh/config
中的Host配置。
本地进入项目B所在文件夹,执行如下命令:
git remote set-url <项目B的远程仓库名> git@github-b:your-username-b/your-repo.git
5、验证本地对不同github账号的连接是否生效
在本地分别测试如下链接:
ssh -T git@github-a
ssh -T git@github-b
如果看到类似”Hi your-username-a/b! You’ve successfully authenticated…”的输出,则连接成功。
6、进行本地仓库对远程仓库的操作
name-a/b! You’ve successfully authenticated…”的输出,则连接成功。
6、进行本地仓库对远程仓库的操作
现在,每个本地仓库都对应了不同github账号,在切换不同本地仓库时无需反复登录、登出github账号,使用push或者pull命令时本地可以自动识别应该使用哪个github账号的ssh连接。