GitHub多账号管理

封面.jpg

GitHub 可以使用 HTTPS 和 SSH 管理。

如果一个项目需要切换不同的身份,或者多个 GitHub 项目各自使用不同的身份操作,要怎么做呢?

有以下几种方法。

一、使用 GitHub 账号登录

每次切换账号时,直接修改钥匙串的用户名和密码,或者删除钥匙串(下次登录会提示重新输入密码)。

因为钥匙串对于当前用户是全局共享的,所以即便是不同的 GitHub 项目也需要重新设置钥匙串内容来实现用户切换,非常麻烦。

二、使用 SSH,并配置主机别名

$ vim ./ssh/config
Host test # 主机别名
HostName github.com # 主机地址,支持IP或域名
User hzh-cocong # 这个是登录服务器的名字,其实就是 git,因为会被覆盖命令行,所以在这里没什么用,除非 git clone test:hzh-cocong/test.git,不过那样就得设置 User git
IdentityFile ~/.ssh/test3

# 使用主机别名克隆
$ git clone git@test:hzh-cocong/test.git

对于不同的 GitHub 项目,可以设置不同的主机别名,并指定不同的私钥文件,从而实现不同项目使用不同的 GitHub 身份操作。

对于同一个项目,要想使用不同身份,就只能在每次更换身份的时候同步更换配置了。

三、使用 ssh-agent

$ ssh-add ~/.ssh/id_rsa_server
$ git clone git@github.com:hzh-cocong/test.git
# 这个只能设置一个,多个的话都是用的同一个私钥,因为 ssh-agent 只能识别 git@github.com,后面的 hzh-cocong 是不会对其做区分的(即便你加了多个,也只会用最开始那个),所以每次切换可能需要修改 ssh-add 里的私钥。

# 修改 ssh-add 私钥
$ ssh-add -d ~/.ssh/id_rsa_server # 先删除旧的私钥
$ ssh-add ~/.ssh/id_rsa_server2 # 添加新的私钥

这个无论是同一个项目还是不同 GitHub 项目,每次切换身份都需要重新设置 ssh-add。

四、配置 .git/config

$ vim .git/config
[core]
       sshCommand = "ssh -i ~/.ssh/test2"

这个是我比较推荐的,使用起来比较自然,当然单个项目切换身份依然很麻烦,但一般都不会在同一个项目里切换身份的吧(虽然我会,不过我也只是为了验证这个功能而已😁)。

更多 SSH 登录相关的内容可以查看 SSH多种远程登录方法

参考链接

git切换账户,QuinceyYang