一つのPC上で複数のgitアカウントをうまいこと使い分ける

最近、二つのgitアカウントを使い分ける必要が出てきて、自分なりのうまいこと使い分ける方法が固まってきたので、共有。もしかしたら、既に誰かが同じこと書いてるかも。

二つ目のアカウントの作成

github.comでアカウントを作る。

sshキー情報を~/.ssh/configに追記する

~/.ssh/conifgに二つ目の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は書かないで良い。私は、念のための確認要に付けてる。

タイトルとURLをコピーしました