はじめに
大学用のGitHubアカウントと,プライベート用のGitHubアカウントを使い分けようと思い,調べたことをまとめてみました.
複数アカウントの使い分け
メインのアカウントについて
まずは以下のコマンドでメインのアカウントについて,~/.gitconfigに設定します.この際,オプションは--globalとします.
既に設定が完了している場合は,読み飛ばしてください.
$ git config --global user.name "name"
$ git config --global user.email "email"
これでメインアカウントの設定が完了しました.
サブのアカウントについて
メインのアカウントでは,全てのディレクトリに対してアカウントの紐付けがされています.ここでは,サブのアカウントをディレクトリごとに紐付けていきます.
まずは,サブのアカウントで使いたいディレクトリへ移動します.
先程,--globalオプションを用いて設定を行いましたが,ここでは--localオプションを用います.これで,そのディレクトリ内の./.git/configにそれぞれのユーザネーム,メールアドレスが登録されます.
$ cd sub_dir // ディレクトリ名は任意
$ git config --local user.name "name"
$ git config --local user.email "email"
このときの"name"と"email"には,サブのアカウントのユーザネーム,メールアドレスを入れてください.
.ssh/configファイルの設定
.ssh/configの設定には,それぞれのアカウントの秘密鍵のパスを指定します.なお,Host名は異なる名前にします(HostNameが同じのため,秘密鍵・公開鍵の整合性が保たれないため).
Host github-research
HostName github.com
IdentityFile ~/.ssh/research_rsa
User git
Host github-study
HostName github.com
IdentityFile ~/.ssh/study_rsa
User git
注意
リモートリポジトリの情報の追加は,一工夫必要です.
メインとサブでは,それぞれのHost名を参照したremote urlの設定を行ってください(Pushしたときにアクセス権がないよと言われる).
$ git remote add origin git@github-research:<メインアカウント名>/<リポジトリ名>.git
$ git remote add origin git@github-study:<サブアカウント名>/<リポジトリ名>.git
おわりに
うまくできれば,それぞれのディレクトリごとに.git/configの設定と,リモートリポジトリの情報の追加でそれぞれのアカウントで使い分けができるはずです.
ほかにも,シェルコマンドを定義して切り替える方法もあるみたいです.
しばらく使ってみて,もっと効率の良い切替方法があればまた更新したいと思います.
参考記事
複数のgitアカウントを使用する場合
GitHubを複数のアカウントで利用するためのメモ
追記
他人のプライベートリポジトリをcloneする場合
$ git clone git@github-study:[他人のアカウント名]/[リポジトリ名].git