最近、二つのgitアカウントを使い分ける必要が出てきて、自分なりのうまいこと使い分ける方法が固まってきたので、共有。もしかしたら、既に誰かが同じこと書いてるかも。
二つ目のアカウントの作成
github.comでアカウントを作る。
sshキー情報を~/.ssh/configに追記する
~/.ssh/configに二つ目のgitアカウントの情報を追記する。
# 元からあるやつ
Host github
HostName github.com
IdentityFile ~/.ssh/main_rsa
User git
Port 22
# 新しく作成したgitアカウントを追記する
Host github-sub
HostName github.com
IdentityFile ~/.ssh/sub_rsa
User git
Port 22基本的に、元からあるものと同様のフォーマットで追記すれば良いが、サブgitアカウントでは、Hostを既存のものと変えておく必要がある点に注意。
接続確認
ここまでやったら、念のため接続を確認しておく。ssh -T <Host>と打つとssh接続ができるか確認できる。
こんな感じのレスポンスが返ってきたらおk。
$ ssh -T github-sub
Enter passphrase for key '/Users/m1z0/.ssh/sub_rsa’:
Hi m1z0-sub! You've successfully authenticated, but GitHub does not provide shell access.remote urlの設定
ちょっと工夫する必要がある。
# メイン
$ git remote add origin git@github:<ACCOUNT_NAME>/<YOUR_REPSITORY>.git
# サブ
$ git remote add origin git@github-sub:<ACCOUNT_NAME>/<YOUR_REPSITORY>.git注意
$ git remote add origin git@github.com:<ACCOUNT_NAME>/<YOUR_REPSITORY>.gitHostnameで指定する上記のような方法だと、Hostnameで二つのアカウントを区別できないために、下に書いた方(今回の例では、サブの方)を毎回参照してしまう
アカウント切り替え
以下の二つのコマンドで切り替えを行う。
$ git config --global user.name "<YOUR_NAME>"
$ git config --global user.email <YUOR_EMAIL>…めんどくさいので、shellコマンドを作る。
function gitMain() {
git config --global user.name "<MAIN_ACCOUNT>"
git config --global user.email <MAIN_ADDRESS>
git config --list
}
function gitSub() {
git config --global user.name "<SUB_ACCOUNT>"
git config --global user.email <SUB_ADDRESS>
git config --list
}これで、$ gitMain と $ gitSub でアカウントの切り替えができるようになった。
出力鬱陶しい人は、git config --listは書かないで良い。私は、念のための確認要に付けてる。


