githubで複数アカウントを管理しながら操作はSouceTreeでやりたい

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ユーザーも使い分かれれているなーというのが確認できました。

タイトルとURLをコピーしました