Edited at

複数のGithubアカウントを同じPC上で切り替える

More than 3 years have passed since last update.


動機

複数のGithubアカウントを同じPC上で切り替えたい。

でも、.ssh/configでssh-keyごとに設定なんかしたくない。

なにがめんどうって、これのせいで新しいリポジトリを作った時とかに、

git remote add origin git@account-a-github.com:account_a/hoge.git

のように、いちいち指定しないといけない。

こんなメンドイことをいちいちしたくない。

アカウントの切り替えはディレクトリごとでいい。


方法

GIT_SSHとdirenvつかえばできる。


GIT_SSHとは?

sshの実行をラップするスクリプトを指定できる環境変数のようだ。

http://git-scm.com/docs/git#_other


direnvとは?

ディレクトリ毎に環境変数を切り替えれるようにできるツール。


  1. brew install direnvdirenvをインストール。


  2. .bashrceval "$(direnv hook bash)"と書いておく(zshの方は適宜置き換えてください)


  3. source ~/.bashrcなどして読み込む



切り替えるには?

切り替えたいディレクトリで direnv edit . すると.envrcファイルが作成される。

ここに、


export GIT_SSH=/path/to/your/git_ssh.sh

のように、sshコマンドを実行するためのシェルスクリプトを書いておく。

指定したシェルスクリプトで、


#!/bin/sh
exec ssh -o IdentityFile=~/.ssh/your_rsa "$@"

とすれば、OK.

ssh-keyをgithubにあげ忘れないように。

また、


direnv: error .envrc is blocked. Run `direnv allow` to approve its content.

のようなエラーが出た場合は、そのエラーの文字通り、direnvで環境変数を切り替えたいディレクトリ(.envrcのあるディレクトリ)で direnv allow と打てばOK.

以上が終わっていれば、ディレクトリごとに設定したssh-keyを使ってgitコマンドが叩けるようになっていると思う。


まとめ

direnvすごい便利。

いろんな活用ができそうなので今後も使っていきたい。


参考

http://qiita.com/kyanny/items/c397370862095c305cbe

http://blog.hde.co.jp/entry/2015/02/27/182117