GitHubで複数のアカウントを使い分けたい場合のやり方の解説です。
GitHubとしては、複数アカウントでの接続は推奨していませんが、組織として会社のアカウントを使うという方針の場合は仕方がありませんので何とかするしかありません。
方法としては2つあります
方法1 ログインユーザーを分ける
一つ目の方法は、OSでログインするユーザーを分けるやり方です。
gitの設定はOSのアカウントごとになるので、ログインユーザーを切り替えれ別のアカウントで作業が可能です。
ですが、ログアウト、ログインをやり直さないといけないというのがやや面倒です。
方法2 複数のカギを登録して切り替える
鍵の登録
.ssh/configにそれぞれのカギを以下のように登録します
Host github.com.hoge
Hostname github.com
User git
IdentityFile ~/.ssh/id_rsa_hoge
Host github.com.fuga
HostName github.com
User git
IdentityFile ~/.ssh/id_rsa_fuga
ここで、Host名が github.com.hoge になってますが、hogeの部分がユーザーの識別用です。
もちろん、鍵もそれぞれ別のものを登録できます。
clone
通常、cloneする場合
例えばfuga/fugafuga.gitをcloneする場合
git clone git@github.com:fuga/fugafuga.git
という感じにしますが、アカウントを指定する場合は
git clone git@github.com.アカウント名:fuga/fugafuga.git
とすることで、アカウントを指定してcloneすることができます。
アカウントは、configファイルで設定したHost名のgithub.com. よりも後ろの部分になります。
例えば、1つ目のアカウントで接続する場合は
git clone git@github.com.hoge:fuga/fugafuga.git
とすればよいでしょう。
リモートURLの張替え
すでにclone済みのリポジトリの場合は、接続先を張り替える必要がありますが、この場合も同じようにアカウント名付のリポジトリを設定すればOKです。
git remote set-url origin git@github.com.アカウント名:fuga/fugafuga.git
git pull
してみて、エラーがなければ成功です。
ローカルの情報をgit configで設定する
念のためコミットメッセージに残る表示名の設定を行っておきましょう。
cd レポジトリのフォルダ
git config --local user.name "なまえ"
git config --local user.email "hogehoge@example.com"