この記事では1つの端末内でGitHubにアクセスするアカウントを切り替える方法をご紹介します。
使いどころとしては、同一の端末で会社(またはグループなど)のプロジェクトと個人のプロジェクトを開発している場合などが考えられます。
方法はSSHで接続する場合とHTTPSで接続する場合によって異なりますが、今回はHTTPSで接続する場合の切り替え方法について説明していきます。
この記事の内容
事前準備:アカウントの作成
前提としてアカウントを既に複数持っており、それぞれにリポジトリが作成されていることを想定しています。
- アカウント1(以降メインアカウントとします)
- アカウント2(以降サブアカウントとします)
アカウントやリポジトリの作成方法から知りたい場合は、次の記事を参考にしてください。
複数のアカウントをHTTPS接続時に切り替える方法
GitHubアカウントをHTTPSで切り替えたい場合は、アカウント情報が必要なアクセス時にユーザー名とパスワードを入力すれば切り替わります。
以下ではHTTPS接続により各アカウントのリポジトリをダウンロードした後、新たに作成したブランチをそれぞれのアカウントのリモートリポジトリにpushするまでの操作を例に解説します。
git clone
メインアカウント、サブアカウントの各リポジトリをgit cloneによりダウンロードします。
パブリックリポジトリであればclone時のアカウント操作はありませんが、プライベートリポジトリの場合はアカウントの操作が必要です。詳しい手順を解説します。
- パブリックリポジトリの場合
- アカウントのリポジトリURLを取得してcloneコマンドを実行します。
$ git clone
- URLの参照方法がわからない場合は、『Github – git cloneコマンドでファイルをダウンロードする方法』を参考にしてください。
【実行結果】
- URLの参照方法がわからない場合は、『Github – git cloneコマンドでファイルをダウンロードする方法』を参考にしてください。
- アカウントのリポジトリURLを取得してcloneコマンドを実行します。
- プライベートリポジトリの場合
プライベートリポジトリをダウンロードする際はリポジトリのURLに「@」を書き足してgit cloneします。これによってユーザー名を認識させることができます。- アカウントのリポジトリのURLをコピーしてgit cloneの後に貼り付けます(まだ実行はしません)。
$ git clone
- 次のように「github.com」の手前に「アカウント名@」を書き足してエンターキーで実行します。
$ git clone https://github.com/hogehuga/hogehugaga.git
↓ 書き換え
$ git clone https://@github.com/hogehuga/hogehugaga.git- 書き換えずに実行した場合でも、ユーザー名の入力を求められるのでそこでアカウントを指定すれば問題ありません。
【実行結果】
- アカウントのリポジトリのURLをコピーしてgit cloneの後に貼り付けます(まだ実行はしません)。
git checkout
ローカルリポジトリで、新しくブランチを作成します。ここでは特にアカウントを考慮する必要はありません。
- checkoutコマンドを入力してブランチを作成します。
$ git checkout -b
git push
作成したローカルブランチをリモートリポジトリにpushします。
- pushコマンドで作成したブランチ名を入力してエンターキーを押します。
git push -u origin
- ユーザー名を求められるのでメインアカウント(もしくはサブアカウント)のユーザー名を入力します。
- メインアカウント(もしくはサブアカウント)のパスワードを入力します。
- 指定したアカウントによるpushが完了しました。
このようにアクセス時にユーザー名・パスワードを指定することでアカウントを切り替えることができます。
この記事ではアカウント情報を逐一入力していますが、以下のドキュメントの設定を行うことで2度目以降のアカウントの情報を省略することができます。
複数のアカウントをHTTPSで切り替える操作手順は以上となります。
アカウント切り替えの補足
以下、GitHubアカウントの切り替えでトラブルが発生しやすい箇所をまとめました。
捕捉1: credential.helperが「manager」の場合は削除(Windowsのみ)
コマンド「git config –system credential.helper」の実行結果が「manager」である場合は、GitHubにpushした最初のユーザー名・パスワードが端末に保存されます。
$ git config --system credential.helper
manager
複数のアカウント接続を行う場合、サブアカウントが認識されなくなるので当該設定を削除する必要があります。
削除するには、管理者権限でGit Bashを起動し次のコマンドを実行します。
$ git config --unset --system credential.helper
捕捉2: commitを行う場合
commit操作を行う前にリポジトリのアカウントの設定を区別する必要があります。よく使うアカウントを「–global」に、それ以外を「–local」(該当リポジトリのみ)に設定しておくとわかりやすいでしょう(全て「–local」でも問題はありません)。
- メインアカウント
$ git config --global user.name
$ git config --global user.email - サブアカウント
$ git config --local user.name
$ git config --local user.email
以上、GitHubの複数のアカウントをHTTPSで切り替える方法でした。
コメント