お茶漬けぶろぐ

GitHubアカウントが複数ある状態でいい感じにgitコマンドを使う

仕事用のGitHubアカウントを作る必要性が生じた。仕事用のメールアドレスを使って登録…は良いのだけど、手元のgitコマンドで素直にgithubに繋ごうとすると、プライベート用のアカウントで接続しにいってしまうので悲しい。
というわけでconfigにちょっと細工をしてやる話。

いきなりconfigを示す。

Host github.com.main
	HostName github.com
	User git
	Port 22
	IdentityFile ~/.ssh/main
	IdentitiesOnly yes
Host github.com.sub
	HostName github.com
	User git
	Port 22
	IdentityFile ~/.ssh/sub
	IdentitiesOnly yes

キモはIdentitiesOnly yesのところ。指定した秘密鍵のみを使用する設定。これを書いておけば、github.com.mainに繋ごうとしたときは~/.ssh/mainだけを使う、みたいなカラクリ。
これがnoだとgithub.com.subに繋ごうとしても~/.ssh/mainが使われて、プライベートのアカウントで接続してしまう。この鍵の選択基準については未調査。ねむい。いつかね。

接続確認。

$ ssh -T git@github.com.main
Hi main! You've successfully authenticated, but GitHub does not provide shell access.
$ ssh -T git@github.com.sub
Hi sub! You've successfully authenticated, but GitHub does not provide shell access.

みたいな感じだ。

あとはcloneするときに、以下のような感じでホストをいじれば良い。

$ git clone git@github.com.sub:hoge/fuga.git

それと、仕事用リポジトリにプライベートのユーザでコミットしないように、以下を設定しておくと良いかも。

$ cd fuga
$ git config --local user.name SHIGOTONONAMAE
$ git config --local user.email SHIGOTONOEMAIL

ぐぐっていた時にパス指定で自動切り替え、みたいなのも見かけたんだけど、今回の用途ではそこまでやるほどの事じゃない気がしたので、こんな感じに落ち着かせました。リポジトリも2つしかないしね。

MacBook Proをクラムシェルモードで使いたい >