複数アカウントの管理について
一部のケースでは、GitHub で複数アカウントを使用する場合があります。 たとえば、オープン ソース コントリビューションの個人アカウントがあり、雇用主が Enterprise 内でユーザー アカウントを作成および管理することもできます。
マネージド ユーザー アカウント を使用して GitHub.com のパブリック プロジェクトにコントリビュートできないため、個人用アカウントを使用して、それらのリソースにコントリビュートする必要があります。 詳しくは、「Enterprise Managed Users について」を参照してください。
複数のアカウントを使用する必要がある場合は、アカウントにサインインしたままアカウントを切り替えることができます。 たとえば、個人用アカウントとサービス アカウントの切り替えです。 詳しくは、「アカウント間の切り替え」を参照してください。
1 つのワークステーションを使用して両方のアカウントからコントリビュートする場合は、プロトコルの組み合わせを使用してリポジトリ データにアクセスするか、リポジトリごとに資格情報を使用することで、Git でのコントリビューションを簡略化できます。
警告: 1 つのワークステーションを使用して 2 つの個別のアカウントにコントリビュートする場合は注意してください。 2 つ以上のアカウントを管理すると、内部コードを誤って一般に漏洩させる可能性が高くなる場合があります。
マネージド ユーザー アカウント を使う必要がない場合、GitHub は、GitHub.com でのすべての作業に対して 1 つの個人アカウントを使うことをお勧めします。 1 つの個人アカウントで、1 つの ID を使用して、個人、オープン ソース、または専門的なプロジェクトの組み合わせにコントリビュートできます。 他のユーザーは、個々のリポジトリと Organization で所有されるリポジトリの両方にコントリビュートするようにアカウントを招待でき、そのアカウントは複数の Organization または Enterprise のメンバーにすることができます。
HTTPS と SSH を使用する 2 つのアカウントへのコントリビューション
1 つのワークステーションから 2 つのアカウントでコントリビュートする場合は、アカウントごとに異なるプロトコルと資格情報を使用してリポジトリにアクセスできます。
Git では、HTTPS または SSH プロトコルのいずれかを使用し、GitHub のリポジトリ内のデータにアクセスして更新できます。 リポジトリのクローンに使用するプロトコルによって、そのリポジトリにアクセスするときにワークステーションで認証に使用される資格情報が決まります。 アカウント管理に対するこのアプローチでは、HTTPS 接続に使用するために 1 つのアカウントの資格情報を格納し、SSH 接続に使用するために他のアカウントに SSH キーをアップロードします。
リポジトリのページには、リポジトリをクローンするための HTTPS URL と SSH URL の両方があります。 詳しくは、「リポジトリをクローンする」を参照してください。
GitHub Enterprise Cloud のリポジトリにアクセスするための SSH の使用について詳しくは、「SSH を使用した GitHub への接続」を参照してください。
HTTPS と personal access token を使って複数のアカウントにコントリビュートする
または、両方のアカウントに HTTPS プロトコルを使う場合は、リポジトリごとに異なる資格情報を格納するように Git を構成することで、アカウントごとに異なる personal access token を使用できます。
-
ターミナルを開きます。
-
資格情報マネージャーを使用していることを確認するには、次のコマンドを入力し、出力をメモします。
Shell git config --get credential.helper
git config --get credential.helper
-
出力で資格情報マネージャーを使用していることが確認された場合は、資格情報マネージャーの保存された資格情報をクリアします。
- 出力に資格情報マネージャーの名前が含まれていない場合は、資格情報マネージャーが構成されていないため、次の手順に進むことができます。
-
出力が
osxkeychain
の場合、macOS キーチェーンを使用しています。 認証情報を消去するには、コマンド ラインで認証情報ヘルパーを使用します。$ git credential-osxkeychain erase host=github.com protocol=https > [Press Return] >
-
出力が
manager
(前のバージョンではmanager-core
) の場合は、Git Credential Manager を使用しています。 資格情報をクリアするには、次のコマンドを実行します。Shell echo "protocol=https\nhost=github.com" | git credential-manager erase
echo "protocol=https\nhost=github.com" | git credential-manager erase
-
-
GitHub でアクセスする各リポジトリの完全なリモート URL の資格情報をキャッシュするように Git を構成するには、次のコマンドを入力します。
Shell git config --global credential.https://github.com.useHttpPath true
git config --global credential.https://github.com.useHttpPath true
-
アカウントごとに
repo
スコープを持つ専用の personal access token (classic) を作成します。 または、アカウントごと、および自分がメンバーになっている Organization ごとに、目的のリポジトリへのアクセスが可能で、リポジトリの内容に対する読み取りと書き込みのアクセス許可を持っている fine-grained personal access token を作成します。 詳細については、「個人用アクセス トークンを管理する」を参照してください。 -
Git を使用してリポジトリをクローンしたり、既にクローンしたリポジトリ内のデータにアクセスしたりすると、Git によって資格情報が要求されます。 リポジトリに対してアクセス権を持つアカウントの personal access token を指定してください。
Git を使い、リポジトリのフル リモート URL に基づいてpersonal access tokenをキャッシュします。こうすることで、正しいアカウントを使って、リポジトリ データにアクセスして GitHub.com に書き込むことができるようになります。
-
Git Bash を開きます。
-
資格情報マネージャーを使用していることを確認するには、次のコマンドを入力し、出力をメモします。
Shell git config --get credential.helper
git config --get credential.helper
-
出力で資格情報マネージャーを使用していることが確認された場合は、資格情報マネージャーの保存された資格情報をクリアします。
-
出力に資格情報マネージャーの名前が含まれていない場合は、資格情報マネージャーが構成されていないため、次の手順に進むことができます。
-
出力が
manager
(前のバージョンではmanager-core
) の場合は、Git Credential Manager を使用しています。 資格情報をクリアするには、次のコマンドを実行します。Shell echo "protocol=https`nhost=github.com" | git credential-manager erase
echo "protocol=https`nhost=github.com" | git credential-manager erase
-
出力が
wincred
の場合は、Windows Credential Manager を使用しています。 資格情報をクリアするには、次のコマンドを入力します。Shell cmdkey /delete:LegacyGeneric:target=git:https://github.com
cmdkey /delete:LegacyGeneric:target=git:https://github.com
-
-
GitHub でアクセスする各リポジトリの完全なリモート URL の資格情報をキャッシュするように Git を構成するには、次のコマンドを入力します。
Shell git config --global credential.https://github.com.useHttpPath true
git config --global credential.https://github.com.useHttpPath true
-
アカウントごとに
repo
スコープを持つ専用の personal access token (classic) を作成します。 または、アカウントごと、および自分がメンバーになっている Organization ごとに、目的のリポジトリへのアクセスが可能で、リポジトリの内容に対する読み取りと書き込みのアクセス許可を持っている fine-grained personal access token を作成します。 詳細については、「個人用アクセス トークンを管理する」を参照してください。 -
Git を使用してリポジトリをクローンしたり、既にクローンしたリポジトリ内のデータにアクセスしたりすると、Git によって資格情報が要求されます。 リポジトリに対してアクセス権を持つアカウントの personal access token を指定してください。
Git を使い、リポジトリのフル リモート URL に基づいてpersonal access tokenをキャッシュします。こうすることで、正しいアカウントを使って、リポジトリ データにアクセスして GitHub.com に書き込むことができるようになります。
-
ターミナルを開きます。
-
資格情報マネージャーを使用していることを確認するには、次のコマンドを入力し、出力をメモします。
Shell git config --get credential.helper
git config --get credential.helper
-
出力で資格情報マネージャーを使用していることが確認された場合は、資格情報マネージャーの保存された資格情報をクリアします。
-
出力に資格情報マネージャーの名前が含まれていない場合は、資格情報マネージャーが構成されていないため、次の手順に進むことができます。
-
出力が
manager
(前のバージョンではmanager-core
) の場合は、Git Credential Manager を使用しています。 資格情報をクリアするには、次のコマンドを実行します。Shell echo "protocol=https\nhost=github.com" | git credential-manager erase
echo "protocol=https\nhost=github.com" | git credential-manager erase
-
GitHub でアクセスする各リポジトリの完全なリモート URL の資格情報をキャッシュするように Git を構成するには、次のコマンドを入力します。
Shell git config --global credential.https://github.com.useHttpPath true
git config --global credential.https://github.com.useHttpPath true
-
アカウントごとに
repo
スコープを持つ専用の personal access token (classic) を作成します。 または、アカウントごと、および自分がメンバーになっている Organization ごとに、目的のリポジトリへのアクセスが可能で、リポジトリの内容に対する読み取りと書き込みのアクセス許可を持っている fine-grained personal access token を作成します。 詳細については、「個人用アクセス トークンを管理する」を参照してください。 -
Git を使用してリポジトリをクローンしたり、既にクローンしたリポジトリ内のデータにアクセスしたりすると、Git によって資格情報が要求されます。 リポジトリに対してアクセス権を持つアカウントの personal access token を指定してください。
Git を使い、リポジトリのフル リモート URL に基づいてpersonal access tokenをキャッシュします。こうすることで、正しいアカウントを使って、リポジトリ データにアクセスして GitHub.com に書き込むことができるようになります。
SSH と GIT_SSH_COMMAND
を使用する複数のアカウントへのコントリビューション
両方のアカウントに SSH プロトコルを使用する場合は、アカウントごとに異なる SSH キーを使用できます。 SSH の使用について詳しくは、「SSH を使用した GitHub への接続」を参照してください。
ワークステーションにクローンする異なるリポジトリに別の SSH キーを使用するには、Git 操作用のシェル ラッパー関数を記述する必要があります。 この関数で以下の手順を行う必要があります。
git config --get remote.origin.url
などのコマンドを使用して、所有者を含むリポジトリのフル ネームを特定します。- 認証用の正しい SSH キーを選びます。
- 適宜、
GIT_SSH_COMMAND
を変更します。GIT_SSH_COMMAND
について詳しくは、Git ドキュメントの「環境変数」を参照してください。
たとえば、次のコマンドでは、GitHub.com の OWNER/REPOSITORY という名前のリポジトリをクローンするための認証に、PATH/TO/KEY/FILE にある秘密キー ファイルを使う SSH コマンドを指定するため、GIT_SSH_COMMAND
環境変数を設定します。
GIT_SSH_COMMAND='ssh -i PATH/TO/KEY/FILE -o IdentitiesOnly=yes' git clone git@github.com:OWNER/REPOSITORY
GIT_SSH_COMMAND='ssh -i PATH/TO/KEY/FILE -o IdentitiesOnly=yes' git clone git@github.com:OWNER/REPOSITORY