For

2024.1.28

GitHubアカウントごとに.gitconfigを設置しssh接続時にIdentityFileを使い分ける方法

概要

複数のGitHubアカウントにおいて、それぞれGitHubにssh接続が必要な場合の設定メモです。

手順

今回は xxxx と yyyy という2つのアカウントを使い分けたいとします。

.gitconfig

.gitconfig を以下のように設置します。

~/.gitconfig

text_____.gitconfig_____[user]
	name = xxxx
	email = xxxx@gmail.com
[includeIf "gitdir:~/Git/yyyy/"]
	path = ~/Git/yyyy/.gitconfig


※includeIf でのディレクトリの指定は最後の / まで必要です

~/Git/yyyy/.gitconfig

text_____.gitconfig_____[user]
	name = yyyy
	email = yyyy@gmail.com


ssh関連ファイル

今回は ~/.ssh ディレクトリに以下のようなファイルを用意しました。

text_____ls_____-rw-------@ 1 user-name staff 2635 Sep 30 23:11 xxxx_id_rsa
-rw-r--r--@ 1 user-name staff 593 Sep 30 23:11 xxxx_id_rsa.pub
-rw-------@ 1 user-name staff 2635 Oct 2 23:14 yyyy_id_rsa
-rw-r--r--@ 1 user-name staff 593 Oct 2 23:14 yyyy_id_rsa.pub


~/.ssh/config

text_____config_____#Include ~/.ssh/conf.d/xxxx/config
Include ~/.ssh/conf.d/yyyy/config

# ~~~省略~~~


~/.ssh/conf.d/xxxx/config

text_____config_____Host github github.com
	HostName			github.com
	User					git
	IdentityFile	~/.ssh/xxxx_id_rsa


~/.ssh/conf.d/yyyy/config

text_____config_____Host github github.com
	HostName			github.com
	User					git
	IdentityFile	~/.ssh/yyyy_id_rsa


aliasの登録

~/.zshrc

text_____.zshrc_____# ~~~省略~~~

alias git-use-xxxx="sed -i '' '1s/^#Include /Include /' ~/.ssh/config && sed -i '' '2s/^Include /#Include /' ~/.ssh/config"
alias git-use-yyyy="sed -i '' '1s/^Include /#Include /' ~/.ssh/config && sed -i '' '2s/^#Include /Include /' ~/.ssh/config"

# ~~~省略~~~


上記のようにするとターミナルで git-use-xxxx と打つと xxxx のGitHubアカウント、 git-use-yyyy と打つと yyyy のGitHubアカウントでGitHubにssh接続できます。