1台のPCで、githubの仕事用とプライベート用のふたつのアカウントを使い分けるという記事はたくさんありますが、gitの操作はSouceTreeでやりたかったのでうまくいった方法をまとめます。
私の環境
作業マシン
MacBookPro Catalina
github
現状は仕事用のアカウントのみ。リモートとはHTTPSで接続しています。
前提
前提として複数アカウントを管理するには、リモートとはSSH接続でなければ難しいと思います。
HTTPSで接続する場合、githubで個人用アクセストークンを発行し、それをパスワード代わりにしてgithubに接続しますが、アカウントを切り替えるたびにパスワードを設定し直す必要があり、煩雑な運用になりミスしやすいです。
SSH接続でしたらそのあたりを解決できました。
私の場合は仕事用アカウントがもともとHTTPS接続で使い慣れているので、これはこのままにしました。
- 仕事用アカウント→HTTPS
- 新しく作成するプライベートアカウント→SSH
作業手順
プライベートアカウント作成手順
- githubでプライベート用アカウントを作成
- 作業マシンでssh-keyを作成
- githubに公開鍵を保存
- 作業マシンでgithubにSSH接続できるように設定
プライベートアカウントにソースをpushする手順
- プライベートアカウントにリポジトリを作成
- SSH接続でソースコードをリモートにpushする
- SourceTreeの設定
プライベートアカウント作成手順
githubでプライベート用アカウントを作成
仕事用アカウントでログイン済みの場合はログアウトして、画面の指示通りにSign Upします。
アカウント複数管理するといろいろミスしやすいので、仕事用のgithub画面は白テーマでプライベート用はダークモードにしました。
作業マシンでssh-keyを作成
こちらの記事を参考にさせていただきました。
複数のGitHubアカウントを使い分けたい時の設定方法とTips
ssh-keyは仕事用とプライベート用に2つ必要です。これはSSH接続に利用するものなので、プライベート用だけで今は足りるのですが、将来的に仕事用の方もSSH接続に変えそうな気がするので、一応ふたつ用意します。
プライベート用アカウントで利用する公開鍵は、id_rsa_sub
という名前にしました。
githubに公開鍵を保存
こちらの記事を参考にさせていただきました。
GitHub アカウントへの新しい SSH キーの追加 – GitHub Docs
作業マシンでgithubにSSH接続できるように設定
~/.ssh/config
のファイルに、以下を追記します。
Host github-sub HostName github.com IdentityFile ~/.ssh/id_rsa_sub User git Port 22 TCPKeepAlive yes IdentitiesOnly yes
この設定がなぜ必要かというと、SSH接続するときにはssh
というコマンドを使用しますが、そのコマンドで設定するオプションを先に設定ファイルに入れておくとコマンドが短くなって楽だよ〜というだけです。
さて、これでプライベート用githubにSSH接続できるはずです。
試してみます。
ssh -T github-sub Hi [ユーザー名]! You've successfully authenticated, but GitHub does not provide shell access.
このように表示されれば成功です。
プライベートアカウントにソースをpushする手順
プライベートアカウントにリポジトリを作成
ブラウザでgithubにログインしてリポジトリを作成します。作成後、こんなコマンドでpushしてね〜という指示が画面に表示されますが、いったん無視します。
SSH接続でソースコードをリモートにpushする
pushしたいソースコードの場所にターミナルで移動して以下のコマンドを打ちます。
git init git commit -m "first commit" git branch -M main git remote add origin git@github-sub:[プライベートアカウントのユーザー名]/[リポジトリ名].git git push -u origin main
ただ、この手順を実施するとcommitユーザーは仕事用の方になってしまいました。
これを直す方法はいくつかありそうでした。
複数のGitHubアカウントを使い分けたい時の設定方法とTips
うーん、ちょっとめんどくさそう…。
あと仕事用アカウントの方への影響を最小限にしたいのでマシン全体への影響がある設定は避けたいです。(globalなgitの設定ファイルをいじりたくない)
以下の手順でSourceTreeからpushすれば、このリポジトリは常にプライベート用ユーザーでできました。
pushするときは基本SourceTreeしか使わないのでこれでいいかと思っています。
SourceTreeの設定
SourceTreeを開き、「新規>既存のローカルリポジトリを追加」でpush済みのディレクトリを選択します。

追加したリポジトリを開き、「設定>高度な設定」で、ユーザー情報の部分を以下の通り変更します。
- 「グローバルユーザー設定を使う」のチェックを外す
- 名前とメールアドレスにプライベート用githubアカウントを入力する

最後に、念のため仕事用リポジトリとプライベート用リポジトリへのpushのテストを実施し、
commitユーザーも使い分かれれているなーというのが確認できました。