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 は何でもいいです。
~/.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)
コメント