如果你有多个 github、bitbucket、gitlab 账号需要来回切换,那么这个方法或许对你有用。
使用git你需要配置一个 ~/.ssh/id_rsa
,如果你有多个身份就麻烦了。传统网上搜到的办法是编辑 ~/.ssh/config
然后加入个类似这样的配置:
Host estgit
HostName github.com
Port 22
User git
IdentityFile ~/.ssh/est_github
IdentitiesOnly yes
这样做也不是不行,就是你输入命令的时候得把主机名改了。比如
git clone git@github.com:est/aether-pelican.git
你需要改成
git@estgit:est/aether-pelican.git
当然这还不是最蛋痛的。最蛋痛的是如果你用了 git submodules
那么你切换马甲变得非常麻烦。因为别人用你的项目没法解析 git@estgit
这样的玩意。
我研究出来了一个hack,直接改repo的 .git/config
可以达到同样的效果。比如
[core]
sshCommand = /usr/bin/ssh -o IdentitiesOnly=yes -i ~/.ssh/est_github -a
[user]
name = est
email = ...@...
这样你可以随意在不同的repo切换n个 ssh identity 身份。