同じPCで複数のgithubのアカウントを使う

会社と個人でGithubのアカウントの2つがあるなど、複数Githubアカウントを持っている人は少なくないはず、そんなときに同一マシンでアカウントを使い分ける方法

よくあるのがSSH鍵を使い分ける方法*1*2

前提条件

"tanjoin"は私のアカウント名です適宜変えて下さい

鍵を作成

$ cd ~/.ssh/
$ ls
# id_rsa.pub id_rsa
# 鍵を作成
$ ssh-keygen -t rsa -C "個人メールアドレス" -f ./tanjoin/id_rsa

だいたいこんな感じで設定
ディレクトリを分けたほうが上書きによるミスの発生を起こしにくくできる
パスフレーズは必要に応じてやってください

Githubに登録

SSH Keysに./tanjoin/id_rsa.pubの中身を登録*3

# Linux or Mac
$ pbcopy < ~/.ssh/tanjoin/id_rsa.pub

SSHの設定

$ open ~/.ssh/config

なければ作成

Host github.com
HostName github.com
IdentityFile ~/.ssh/id_rsa

Host tanjoin
User git
Port 22
HostName github.com
IdentityFile ~/.ssh/tanjoin/id_rsa
TCPKeepAlive yes
IdentitiesOnly yes

こんな感じに設定すると

# 仕事用
$ git clone git@github.com:tanjoin/AA.git
# 個人用
$ git clone git@tanjoin:tanjoin/AA.git

SSHが使える
だがしかし、会社用のアカウントをグローバルアカウントで設定していたりすると個人のほうに git push したときに会社のアカウントで書き込んでしまうとかいう致命的ミスを起こすことがある
そんなときの解決方法

グローバルアカウントの設定方法

グローバルアカウントの設定方法(~/.gitconfig)

$ git config --global user.name "会社のユーザ名"
$ git config --global user.email "会社のメールアドレス"

これは色んな所で見かけたりします。そして次に、

ローカルリポジトリの設定方法([ローカルリポジトリのディレクトリ]/.git/config)

ええ、ローカルリポジトリ毎に設定出来たのです*4

$ cd [ローカルリポジトリのディレクトリ]
$ git config user.name "個人のユーザ名"
$ git config user.email "個人のメールアドレス"

これで、git push で書き込まれるユーザ情報は設定したローカルリポジトリに限っては個人のアカウントになります

*1:githubでの複数アカウントの使い分けかた — KaoriYa http://www.kaoriya.net/blog/2012/07/13/

*2:【メモ】githubの複数アカウントSSH接続するための設定手順 | Developers.IO http://dev.classmethod.jp/tool/github-ssh-sub-account-setting/

*3:Windowsはclipコマンド

*4:同じマシンで複数のgithubアカウントを使い分ける - Qiita [キータ] http://qiita.com/strsk/items/96987bfc98e3f92fe6fb