07 November, 2019

GitHubで複数のアカウントをリポジトリを切り替えて使う手順

GitHub、案件用とプライベート用のアカウントを複数持っています。 1台のPCで複数アカウントを持っていると、プライベート用のリポジトリにPushした時にコミットログに案件用アカウントが載ってしまうことがありました。
リポジトリごとにアカウントを切り替えられるように設定したときの覚書です。

ほぼほぼ下記記事の手順でうまくいったのですが、もしもう1回、時間を置いてチャレンジした場合に、私の理解レベルで進められるように初歩的な部分を追記した内容になっています。

GitHubで仕事用とプライベート用のアカウントを切り替えて使う | Black Everyday Company

前提条件

  • GitHubアカウントを複数所持していること
  • 以下の操作ができること

    • Git/GitHub
    • ターミナル

手順

秘密鍵を作る

.sshにディレクトリ移動して「github-private」という名前の秘密鍵を作成します。

# ディレクトリ移動
cd ~/.ssh

# 「github-private」という名前の秘密鍵を作成
ssh-keygen -t rsa -f github-private

lsコマンドを実行し、「github-private(秘密鍵)」「github-private.pub(公開鍵)」があることを確認します。

ls

.ssh/configの作成・編集

configファイルを作成し、ファイルを編集します。

# 「config」作成
touch config

# テキストエディタで開く(私はこれで慣れているので適量viコマンドなどに変更してください)
open config -t

以下をコピペし、自分の環境に合わせて書き換えていきます。

# 案件用
Host github.com
  User ユーザー名
  Port ポート番号
  HostName ホスト名
  IdentityFile ~/.ssh/秘密鍵のファイル名
  TCPKeepAlive yes
  IdentitiesOnly yes

# プライベート
Host github-private
  User ユーザー名
  HostName ホスト名
  IdentityFile ~/.ssh/github-private.pub(さきほど設定した秘密鍵のファイル名)
  TCPKeepAlive yes
  IdentitiesOnly yes

GitHubにプライベート用アカウントでログインし、Setting > SSH and keys > New SSH keyにアクセスします。 (キャプチャ)

Title欄に自分がわかりやすい名前(github-privateにしました)、Key欄には作成した公開鍵「.ssh/github-private.pub」の中身をまるっとコピペします。 (キャプチャ)

プライベートのリポジトリにプライベートアカウントを適用させる

開発用ワークスペースに移動し、設定したいリポジトリをクローンします

# 開発用ワークスペースに移動(適量書き換えてください)
cd /Users/(ユーザ名)/workspace

# 設定したいプライベートのリポジトリをクローンする
git clone git@github-private:(ユーザ名)/(リポジトリ名).git

クローンしたリポジトリに移動後、git configでプライベート用のGitHubユーザ名、メールアドレスを設定します。 ほかのリポジトリには適用させたくないので--globalはつけません。 Git - 最初のGitの構成

cd (リポジトリのディレクトリ名)
git config user.name (ユーザ名)
git config user.email (メールアドレス)

リポジトリにある「./.git/config」の中身を確認して、user欄のname、emailが書かれていることを確認します。

# configファイルを確認
vi ./.git/config

こうなってればOK。

[user] name = (ユーザ名) email = (メールアドレス)

試しに何かしらcommitして、git logを実行します。

git log

Author欄がプライベートのユーザ名・メアドに変更されていたら完了です。

Author: (ユーザ名) <(メールアドレス)>

もう一度cloneしなおすのめんどくさい場合は、git remote set-urlでアドレスの向き先を変更する手もあります。

# 登録しているリモートリポジトリを確認
git remote -v

# アドレスの向き先を変更する
git remote set-url (リモート名) git@github-private:(ユーザ名)/(リポジトリ名).git