GitHubで個人開発用のアカウントとは別に仕事用などのアカウントを利用する際の具体的な手順をまとめました。
環境
MacOS
$ sw_vers
ProductName: Mac OS X
ProductVersion: 10.15.3
BuildVersion: 19D2064
Git
$ git --version
git version 2.24.3 (Apple Git-128)
ディレクトリ構成
~/
├── .gitconfig
├── personal/
├── .gitconfig
├── 個人開発用のリポジトリ1
├── 個人開発用のリポジトリ2
├── ...
└── 個人開発用のリポジトリN
└── office/
├── .gitconfig
├── 会社用のリポジトリ1
├── 会社用のリポジトリ2
├── ...
└── 会社用のリポジトリN
sshの設定
まずsshキーを複数用意し、それぞれのGitHubのアカウントに設定します。以下のコマンドでsshキーを作成します。
$ mkdir ~/.ssh(必要であれば)
$ cd ~/.ssh
$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/(username)/.ssh/id_rsa):git_private_rsa
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
1回目に聞かれた時点でキーの名前(ここではgit_private_rsa)を指定。
その後、2回エンターを押すとgit_private_rsaとgit_private_rsa.pubが生成されます。このキーを個人開発用に使用します。
さらに、もう一度以下のコマンドでsshキーを作成します。
$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/(username)/.ssh/id_rsa):git_office_rsa
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
今回はgit_office_rsaという名前を指定します。このキーを例えば、仕事用のキーとします。
これらの生成したsshキーをGitHubで公開の設定を行います。
その際に、鍵の中身をクリップボードにコピーするのは以下のコマンドで行う。
$ pbcopy < ~/.ssh/keyname.pub (Mac)
$ clip < ~/.ssh/keyname.pub (Windows)
次に、sshの設定を行います。~/.ssh/configファイルを作成し、sshの設定を行います。
Host github-private # 個人用の設定
User git
HostName github.com
IdentityFile ~/.ssh/git_private_rsa
IdentitiesOnly yes
AddKeysToAgent yes
Host github-office #仕事用の設定
User git
HostName github.com
IdentityFile ~/.ssh/git_office_rsa
IdentitiesOnly yes
AddKeysToAgent yes
- Host:任意のユニークな値
- HostName, User:github.comとgit
- IdentityFile:先ほど作成したsshキーの秘密鍵のファイルパス作成した秘密鍵のファイルパス
- IdentitiesOnly:複数のキーを保持している場合に、設定された鍵のみを使用するかどうかを設定。
- AddKeysToAgent:キーとパスフレーズをssh-agentへ自動的に追加するかどうかを設定。
git config
以下のディレクトリ構成を想定しています。
ここでは、アカウント操作の間違いを起こさないためにglobalの設定は行わないとします。
すでに設定している場合は、以下のコマンドでglobalの設定を削除します。$ git config --global --unset user.name $ git config --global --unset user.email
まず、~/.gitconfigを次のように設定します。
[includeIf "gitdir:~/personal/"]
path = ~/personal/.gitconfig
[includeIf "gitdir:~/office/"]
path = ~/office/.gitconfig
includeIfを利用することで、.gitconfigを条件付きで読み込むことができます。gitdirに読み込み先のディレクトリを指定します。このようにすることで、各ディレクトリで異なるconfigファイルを読み込むことができます。
そして、次のようにそれぞれのconfigファイルを作成します。まず、~/personal/.gitconfigは
[user]
name = abc
email = abc@example.com
[url "git@github-personal"]
insteadOf = "git@github.com"
~/office/.gitconfigは
[user]
name = def
email = def@example.com
[url "git@github-office"]
insteadOf = "git@github.com"
insteadOfを利用すると、gitコマンド使用時に、insteadOfで指定した文字列が、urlで指定した文字列に置き換えられて実行される。ここでは、gitコマンド使用時にgit@github.comがgit@github-officeに置き換えられてから実行される。
以上の設定を行うことで、GitHubの複数アカウントを使い分けることができます。
コメント