如果你有多个 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 身份。