複数のGitHubアカウントを1つのPCのディレクトリで使い分ける方法

Windows で既に1つの GitHub アカウントをPCで管理していて、追加でサブの GitHub アカウントを同じPC内のディレクトリによって使い分ける方法です。
「private」というディレクトリならサブの GitHub アカウントを使うという感じです。

こちらのサイトを参考にしました。
複数のGitHubアカウントを使い分けたい時の設定方法とTips

目次

公開鍵と秘密鍵を作成

まずホームディレクトリにある .ssh ディレクトリに移動し、SSH で公開鍵認証を使うためにサブアカウント用の公開鍵と秘密鍵を作成します。

cd ~/.ssh
ssh-keygen

すると下記のように「キーを保存するファイル名を入力して」と言われるので適当な名前を入力します。
今回は「id_rsa_private」とします。

Generating public/private rsa key pair.
Enter file in which to save the key (/c/Users/(ユーザー名)/.ssh/id_rsa):id_rsa_private

その後パスフレーズをどうするか聞かれます。特に必要なければEnterキーを2回押してパスフレーズは非設定にします。

Enter passphrase (empty for no passphrase):
Enter same passphrase again:

すると下記のように公開鍵と秘密鍵が作成されます。

Your identification has been saved in id_rsa_private
Your public key has been saved in id_rsa_private.pub
The key fingerprint is:
SHA256:ujF7Ay0uVrUM9KeC3DP1tFVWBGskfx+Wfis/dRq/fPU xxx@MyComputer
The key's randomart image is:
+---[RSA 3072]----+
|    . o..        |
|     + =         |
|    o . *        |
|    .o =         |
|   + .=.S        |
|    +o=oo.o .   .|
|.....==.=. =   ..|
|+.o= ooB+ ... . E|
|.=o. oo..o  oo   |
+----[SHA256]-----+

cat コマンドで「id_rsa_private.pub」を開き全てコピーします。

cat id_rsa_private.pub

追加したい GitHub アカウントの SSH and GPG keys のページで「NEW SSH key」ボタンから先ほどコピーした「id_rsa_private.pub」を「Key」の箇所に貼り付けて SSH key を追加します。Title は何でもいいです。

Github SSH key 追加

~/.ssh/config ファイルに追加したい GitHub アカウントの情報を追加

touch ~/.ssh/config

.ssh ディレクトリに config ファイルを作成し以下のように記述し、GitHub アカウントの Host と 秘密鍵ファイルの場所を設定します。
追加する GitHub アカウントの Host を 「github.private」
IdentityFile を「~/.ssh/id_rsa_private」
とします。

Host github
	HostName github.com
	IdentityFile ~/.ssh/id_rsa
	User git
	IdentitiesOnly yes

Host github.private
	HostName github.com
	IdentityFile ~/.ssh/id_rsa_private
	User git
	IdentitiesOnly yes

参考にしたサイトには下記2つの項目も書かれていましたがデフォルトの値のようなのであってもなくても良さそうです。
Port 22
TCPKeepAlive yes

GitHub アカウントと SSH 接続ができているか確認

ssh -T github
Hi (メインのGitHubのアカウント名)! You've successfully authenticated, but GitHub does not provide she
ll access.

ssh -T github.private
Hi (追加したいGitHubのアカウント名)! You've successfully authenticated, but GitHub does not provide shell
 access.

この様に「Hi」の後に追加したい GitHub アカウント名が出ていれば SSH 接続が成功しています。

ディレクトリで GitHub アカウントを切り替える

追加したい GitHub アカウント用の[.gitconfig]ファイルを作成

touch ~/.gitconfig_private

ホームディレクトリに「.gitconfig_private」というファイルを作ります。(ファイル名は任意です)
作成したファイルに下記の様に追加したいGitHub アカウントのユーザー名とメールアドレスの情報を書きます。

[user]
	name = 追加したいGitHubアカウントのユーザー名
	email = 追加したいGitHubアカウントのメールアドレス

[.gitconfig]ファイルの修正

[includeIf "gitdir:~/private/"]
	path = ~/.gitconfig_private

上記を「.gitconfig」ファイルに追加します。
「gitdir: ~~」に追加する GitHub アカウントで管理したいファイルがあるディレクトリを指定する。
「path」に上記で作成した「.gitconfig_private」ファイルのパスを書きます。

GitHub アカウントが自動的に切り替わっているかの確認

GitHub アカウントを切り替えたいディレクトリで 新しい Git リポジトリを作ります。
今回はホームディレクトリの「private」というディレクトリで追加したサブのGitHub アカウントを使いたいという設定をしたので下記のように確認します。

cd ~/private
git init
git config user.name
# 追加したGitHubアカウントのユーザー名が表示される
git config user.email
# 追加したGitHubアカウントのメールアドレスが表示される

この様に追加したい GitHub アカウントのユーザー名とメールアドレスが表示されていれば成功です。

リモートリポジトリの追加方法

メインアカウントは今まで通り

git remote add origin git@github.com:メインアカウントのユーザ名/リポジトリ名.git

でリモートリポジトリに追加できるのですが、サブで追加したGitHub アカウントは以下のようになります。

git remote add origin [configファイルで設定したHost]:[追加したGitHubアカウントのユーザ名]/[リポジトリ名].git

今回の例ですとHostが[github.private]、追加したい GitHub アカウントのユーザ名を[tanacio]とし、リポジトリ名を[practice]とすると下記のようになります。

git remote add origin github.private:tanacio/practice.git

同じ環境で他のPCのローカルにクローンする場合

git clone git@github.com:tanacio/practice.git
cd practice
git remote rm origin
git remote add origin github.private:tanacio/practice.git

下記のように clone して remote add すると「error: remote origin already exists.(訳: リモートオリジンはすでに存在します。)」といわれます。「git remote -v」で確認すると確かに origin が存在しているので「git remote rm origin」で origin を削除してから remote add します。

git clone git@github.com:tanacio/practice.git
cd practice
git remote add origin github.private:tanacio/practice.git
error: remote origin already exists.
git remote -v
origin  git@github.com:tanacio/practice.git (fetch)
origin  git@github.com:tanacio/practice.git (push)
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

コメント

コメントする

目次