未経験からエンジニア転職をするための最強ロードマップロードマップ

【必見】1つのPCで複数のGitアカウントを華麗に使い分ける方法

目次

はじめに

こんなことを考えたことはありませんか?

エンジニアA

Gitのアカウントを仕事とプライベートで分けたいんだけど。。。

そうそうこれこれ!

エンジニアあるあるですよね!

ということで、今回はそんな悩みを吹き飛ばすために、複数のGitアカウントを1台のPCで扱えるように設定していきましょう。

Gitのホスティングサービスのアカウント作成

まずは今回使い分けるGitのホスティングサービスのアカウントを作成しましょう。

すでにアカウントを持っている方は特に作成する必要はありません。

今回は例として仕事用のGitHubアカウントとプライベート用のGitHubアカウントを作成しました。

秘密鍵と公開鍵の作成

まずは~/.sshディレクトリにSSHで公開鍵認証を使うための秘密鍵と公開鍵を作成します。

それでは~/.sshディレクトリに移動していきます。

$ cd ~/.ssh

次に、秘密鍵と公開鍵を作っていきます。

今回は複数のアカウントを運用する形になるので、秘密鍵と公開鍵を必要アカウント分を作成してください。

なお、tオプションで公開鍵の暗号形式を選択する事ができます。

ちなみにGitHubではed25519が推奨されているそうなので、例ではed25519を使用しています。

ただ、BacklogのGitにSSHで接続しようとed25519形式で公開鍵を作成したところ、正常に認識されませんでした。

そのような場合は-t rsaと記述することでRSA方式を指定して公開鍵を作成し、試してみてください。

また、fオプションで鍵の名前の指定は必ず行っておきましょう。

というのも、すでに存在する名前で鍵を作成した場合、すでに存在する同じ名前の鍵ファイルの内容を上書きしてしまうからです。

それでは、下記コマンドを実行してください。

$ ssh-keygen -t ed25519 -C "account1@example.com" -f id_ed25519_github_account1
$ ssh-keygen -t ed25519 -C "account2@example.com" -f id_ed25519_github_account2

それぞれのコマンドを実行すると、下記のように対話形式で2つの質問を聞かれますが、2回とも何も入力せずにEnterを押してしまいましょう。

Generating public/private ed25519 key pair.
Enter passphrase (empty for no passphrase): 
Enter same passphrase again:

すると~/.sshディレクトリに下記4つのファイルが作成されています。

  • id_ed25519_github_account1
  • id_ed25519_github_account1.pub
  • id_ed25519_github_account2
  • id_ed25519_github_account2.pub

id_ed25519_github_account1id_ed25519_github_account2が秘密鍵で、id_ed25519_github_account1.pubid_ed25519_github_account2.pubが公開鍵となります。

公開鍵をGitのホスティングサービスに登録

次は、2つの公開鍵の内容をコピーして、GitHubなどのホスティングサービスにそれぞれ登録していきます。

まずは1つ目のアカウントでGitのホスティングサービスにログインをしてください。

次に、コピーした公開鍵をGitのホスティングサービスに登録していきます。

まずは作成した公開鍵をコピーしていきます。

下記のコマンドを実行すると、公開鍵のファイルの内容を表示することができます。

それぞれコピーできるようにしておきましょう。

$ cat ~/.ssh && cat id_ed25519_github_account1.pub
$ cat ~/.ssh && cat id_ed25519_github_account2.pub

GitHubの場合、公開鍵は下記から登録することができます。

GitHub
Build software better, together GitHub is where people build software. More than 100 million people use GitHub to discover, fork, and contribute to over 420 million projects.

Backlogの場合は下記を参考にしてください。

サル先生のGit入門
SSH接続設定|サル先生のGit入門【プロジェクト管理ツールBacklog】 ようこそ、サル先生のGit入門へ。Gitをつかってバージョン管理ができるようになるために一緒に勉強していきましょう!

それでは、GitHubを開いたら下記画像の通り「New SSH key」をクリックしてください。

すると、下記のようSSHの公開鍵の設定画面になるので、Title部分に今回設定する公開鍵がわかるような名前を付けて、Keyの部分に先程コピーした公開鍵の内容を貼り付けてください。

TitleとKeyの入力が終わったら「Add SSH key」をクリックして登録を完了させましょう。

これで無事に1つ目のアカウントに公開鍵の設定をすることができました。

続いて2つ目のアカウントも先ほどと同じように、ログインして公開鍵を登録しておいてください。

configファイルにアカウントの情報を追加

次に、SSH接続の設定をするために、configファイルを作成していきます。

~/.sshディレクトリにconfigファイルがない場合は、下記コマンドを実行してファイルを作成してください。

$ touch ~/.ssh/config

作成したconfigファイルにSSHで接続する際の情報を記述してください。

注意点として、Userは必ずgitにしてください。

Host github.com.account1 #任意のホスト名
  HostName github.com
  IdentityFile ~/.ssh/id_ed25519_github_account1 # アカウント1の秘密鍵ファイル
  User git
  IdentitiesOnly yes

Host github.com.account2 #任意のホスト名
  HostName github.com
  IdentityFile ~/.ssh/id_ed25519_github_account2 # アカウント2の秘密鍵ファイル
  User git
  IdentitiesOnly yes

configファイルを保存したら、実際にSSH接続ができているか確認していきましょう。

確認するためには下記のコマンドを実行してください。

$ ssh -T github.com.account1
$ ssh -T github.com.account2

下記のようにそれぞれのコマンドで設定したGitHubのアカウント名が出力されればOKです。

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

もしもPermission denied (publickey)などとなってしまった場合はconfigファイルの秘密鍵のパスが合っているかなどを確認してください。

ディレクトリごとにGitHubアカウントを自動で切り替える設定

最後にディレクトリごとにGitHubアカウントを自動で切り替える設定をしていきましょう。

メインで使用したいGitのアカウントを下記のコマンドで登録

すでに登録している方はやらなくてOKです。

$ git config --global user.name "account1"
$ git config --global user.email account1@example.com

サブで使用したいアカウント用に.gitconfigファイルを作成

下記のコマンドを実行してファイルを作成してください。

なお、ファイル名は好きに付けてしまって大丈夫です。

$ touch ~/.gitconfig_account2

これでホームディレクトリに.gitconfig_account2ファイルが作成されました。

次に、作成した.gitconfig_account2ファイルにサブで使用したいアカウントのユーザー名とメールアドレスを下記の通り記述してください。

[user]
    name = account2
    email = account2@example.com

.gitconfigファイルの編集

次に、~/.gitconfigファイルの最後に下記を追加してください。

[includeIf "gitdir/i:~/Desktop/Private/"]
    path = ~/.gitconfig_account2

このコードを追加することで、~/Desktop/Privateの中で作成されたディレクトリがGit管理になった場合、自動的にaccount2に切り替わるようになります。

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

設定が全て終了したので、無事にアカウントが自動的に切り替わっているかの確認をしましょう。

メインアカウントの確認

下記のコマンドを実行して、メインで使用するアカウントのユーザー名とメールアドレスが出力されていればOKです。

$ git config user.name
$ git config user.email

サブアカウントの確認

まずは~/Desktopに下記のコマンドを実行してPrivateディレクトリを作成してください。

$ mkdir ~/Desktop/Private

次にGitの初期化をして、ユーザー名とメールアドレスを確認してみましょう。

無事にサブアカウントのユーザー名とメールアドレスが出力されれば成功です。

$ git init
$ git config user.name
$ git config user.email

ちなみに、~/Desktop/Private配下に作成したディレクトリやgit cloneしてきたディレクトリなどでも自動的にサブアカウントのユーザー名とメールアドレスが出力されるはずです。

できなかった場合

もしできていない場合は、.gitconfigを下記の通りに変えて試してみてください。

[includeIf "gitdir:~/Desktop/Private/"]
    path = ~/.gitconfig_account2

変更点はgitdirの後の/iを削除しただけです。

注意点

メインアカウントとサブアカウントでリモートリポジトリの追加方法やクローンする際のコマンドが少し違ってきます。

【メイン】リモートリポジトリの追加

メインアカウントは今まで通りで大丈夫です。

つまり、GitHubなどで指定されるコマンドをそのままコピーで構いません。

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

【サブ】リモートリポジトリの追加

サブアカウントの方はGitHubなどで指定されるコマンドのままコピーしてもリモートリポジトリの追加ができません。

下記のようにコマンドを調整してください。

$ git remote add origin github.com.account2:サブアカウントのユーザー名/リポジトリ名.git

github.com.account2の部分は、configファイルで追加したサブアカウントのHost名になるので注意してください。

【メイン】クローン

メインアカウントは今まで通りで大丈夫です。

つまり、GitHubなどで指定されるコマンドをそのままコピーで構いません。

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

【サブ】クローン

サブアカウントの方はリモートリポジトリの追加時と同じように、GitHubなどで指定されるURLなどをそのままコピーしてもクローンすることができません。

下記のようにコマンドを調整してください。

$ git clone github.com.account2:サブアカウントのユーザー名/リポジトリ名.git

github.com.account2の部分は、configファイルで追加したサブアカウントのHost名になるので注意してください。

最後に

ただし、GitHubの利用規約では「無料アカウントは1つまで」との記載があるので、ご利用は計画的に!

プライベート用(無料)と仕事用(有料)とかなら全然OKですね!

GitHub Docs
GitHub のサービス使用条件 - GitHub Docs GitHub の使用開始、トラブルシューティング、最大限に活用する方法について説明します。 新規ユーザー、開発者、管理者、すべての GitHub の製品に関するドキュメント。

コメント

    この記事が気に入ったら
    フォローしてね!

    よかったらシェアしてね!
    • URLをコピーしました!

    コメント

    コメントする

    目次