最近、二つの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>.git
Hostname
で指定する上記のような方法だと、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
は書かないで良い。私は、念のための確認要に付けてる。