#はじめに
大学用の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