Skip to main content

複数のアカウントの管理

1 つのワークステーションを使用して複数のアカウントのプロジェクトにコントリビュートする場合は、Git 構成を変更してコントリビューション プロセスを簡略化できます。

Platform navigation

HTTPS と personal access token を使って複数のアカウントにコントリビュートする

または、両方のアカウントに HTTPS プロトコルを使う場合は、リポジトリごとに異なる資格情報を格納するように Git を構成することで、アカウントごとに異なる personal access token を使用できます。

  1. ターミナルを開きます。

  2. 資格情報マネージャーを使用していることを確認するには、次のコマンドを入力し、出力をメモします。

    Shell
    git config --get credential.helper
    
  3. 出力で資格情報マネージャーを使用していることが確認された場合は、資格情報マネージャーの保存された資格情報をクリアします。

  • 出力に資格情報マネージャーの名前が含まれていない場合は、資格情報マネージャーが構成されていないため、次の手順に進むことができます。
    • 出力が 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
      
  1. GitHub でアクセスする各リポジトリの完全なリモート URL の資格情報をキャッシュするように Git を構成するには、次のコマンドを入力します。

    Shell
    git config --global credential.https://github.com.useHttpPath true
    
  2. アカウントごとに repo スコープを持つ専用の personal access token (classic) を作成します。 または、アカウントごと、自分がメンバーになっている organization ごとに、目的のリポジトリへのアクセスが可能で、リポジトリの内容に対する読み取りと書き込みのアクセス許可を持っている fine-grained personal access token を作成します。 詳しくは、「個人用アクセス トークンを管理する」をご覧ください。

  3. Git を使用してリポジトリをクローンしたり、既にクローンしたリポジトリ内のデータにアクセスしたりすると、Git によって資格情報が要求されます。 リポジトリに対してアクセス権を持つアカウントの personal access token を指定してください。

    Git を使い、リポジトリのフル リモート URL に基づいてpersonal access tokenをキャッシュします。こうすることで、正しいアカウントを使って、リポジトリ データにアクセスして GitHub.com に書き込むことができるようになります。

  1. Git Bash を開きます。

  2. 資格情報マネージャーを使用していることを確認するには、次のコマンドを入力し、出力をメモします。

    Shell
    git config --get credential.helper
    ```1. 出力で資格情報マネージャーを使用していることが確認された場合は、資格情報マネージャーの保存された資格情報をクリアします。* 出力に資格情報マネージャーの名前が含まれていない場合は、資格情報マネージャーが構成されていないため、次の手順に進むことができます。* 出力が `manager` (前のバージョンでは `manager-core`)は、Git Credential Manager を使用しています。 資格情報をクリアするには、次のコマンドを実行します。
    
     ```shell copy
     echo "protocol=https`nhost=github.com" | git credential-manager erase
    
    • 出力が wincredは、Windows Credential Manager を使用します。 資格情報をクリアするには、次のコマンドを入力します。

      Shell
      cmdkey /delete:LegacyGeneric:target=git:https://github.com
      
  3. GitHub でアクセスする各リポジトリの完全なリモート URL の資格情報をキャッシュするように Git を構成するには、次のコマンドを入力します。

    Shell
    git config --global credential.https://github.com.useHttpPath true
    
  4. アカウントごとに repo スコープを持つ専用の personal access token (classic) を作成します。 または、アカウントごと、自分がメンバーになっている organization ごとに、目的のリポジトリへのアクセスが可能で、リポジトリの内容に対する読み取りと書き込みのアクセス許可を持っている fine-grained personal access token を作成します。 詳しくは、「個人用アクセス トークンを管理する」をご覧ください。

  5. Git を使用してリポジトリをクローンしたり、既にクローンしたリポジトリ内のデータにアクセスしたりすると、Git によって資格情報が要求されます。 リポジトリに対してアクセス権を持つアカウントの personal access token を指定してください。

    Git を使い、リポジトリのフル リモート URL に基づいてpersonal access tokenをキャッシュします。こうすることで、正しいアカウントを使って、リポジトリ データにアクセスして GitHub.com に書き込むことができるようになります。

  1. ターミナルを開きます。

  2. 資格情報マネージャーを使用していることを確認するには、次のコマンドを入力し、出力をメモします。

    Shell
    git config --get credential.helper
    
  3. 出力で資格情報マネージャーを使用していることが確認された場合は、資格情報マネージャーの保存された資格情報をクリアします。

  • 出力に資格情報マネージャーの名前が含まれていない場合は、資格情報マネージャーが構成されていないため、次の手順に進むことができます。

  • 出力が manager (前のバージョンでは manager-core)は、Git Credential Manager を使用しています。 資格情報をクリアするには、次のコマンドを実行します。

    Shell
    echo "protocol=https\nhost=github.com" | git credential-manager erase
    
  1. GitHub でアクセスする各リポジトリの完全なリモート URL の資格情報をキャッシュするように Git を構成するには、次のコマンドを入力します。

    Shell
    git config --global credential.https://github.com.useHttpPath true
    
  2. アカウントごとに repo スコープを持つ専用の personal access token (classic) を作成します。 または、アカウントごと、自分がメンバーになっている organization ごとに、目的のリポジトリへのアクセスが可能で、リポジトリの内容に対する読み取りと書き込みのアクセス許可を持っている fine-grained personal access token を作成します。 詳しくは、「個人用アクセス トークンを管理する」をご覧ください。

  3. Git を使用してリポジトリをクローンしたり、既にクローンしたリポジトリ内のデータにアクセスしたりすると、Git によって資格情報が要求されます。 リポジトリに対してアクセス権を持つアカウントの personal access token を指定してください。

    Git を使い、リポジトリのフル リモート URL に基づいてpersonal access tokenをキャッシュします。こうすることで、正しいアカウントを使って、リポジトリ データにアクセスして GitHub.com に書き込むことができるようになります。

SSH と GIT_SSH_COMMAND を使用する複数のアカウントへのコントリビューション

両方のアカウントに SSH プロトコルを使用する場合は、アカウントごとに異なる SSH キーを使用できます。 SSH の使用について詳しくは、「SSH を使用したGitHubへの接続」を参照してください。

ワークステーションにクローンする異なるリポジトリに別の SSH キーを使用するには、Git 操作用のシェル ラッパー関数を記述する必要があります。 この関数で以下の手順を行う必要があります。 1. git config --get remote.origin.url などのコマンドを使用して、所有者を含むリポジトリのフル ネームを特定します。

  1. 認証用の正しい SSH キーを選びます。
  2. 適宜、GIT_SSH_COMMAND を変更します。 GIT_SSH_COMMAND について詳しくは、Git ドキュメントの「環境変数」を参照してください。

たとえば、次のコマンドでは、GitHub.com の OWNER/REPOSITORY という名前のリポジトリをクローンするための認証に、GIT_SSH_COMMAND にある秘密キー ファイルを使う SSH コマンドを指定するため、**** 環境変数を設定します。

Shell
GIT_SSH_COMMAND='ssh -i PATH/TO/KEY/FILE -o IdentitiesOnly=yes' git clone git@github.com:OWNER/REPOSITORY

SSH と複数のキーを使用して複数のアカウントに貢献する

マネージド ユーザーを含む Enterprise のメンバーでありながら、個人アカウントを使用して企業の外部で共同作業を希望する場合、アカウントごとに異なる SSH キーを使用することができます。 SSH の使用について詳しくは、「SSH を使用したGitHubへの接続」を参照してください。

警告

マネージド ユーザーを含む組織 内と社外の両方のリポジトリに同じ SSH キーを使用して貢献することはできません。

  1. あなたの マネージド ユーザーを含む組織 内のリポジトリ用に異なる SSH キーを生成してください。 「新しい SSH キーを生成して ssh-agent に追加する」を参照してください。 キーを保存するときに、既存のキーとは別のファイル名を付けます (たとえば、-emu ファイルの名前に追加します)。

  2. 新しい SSH キーを マネージド ユーザー アカウント に追加します。 「GitHub アカウントへの新しい SSH キーの追加」を参照してください

  3. 異なるキーを使用するように SSH 構成ファイル ~/.ssh/config を構成します。 たとえば、あなたの個人用 SSH キーが ~/.ssh/id_ed25519 で、あなたのマネージド ユーザーを含む Enterprise SSH キーが ~/.ssh/id_ed25519-emu

    Text
    Host github.com
        IdentityFile ~/.ssh/id_ed25519
        IdentitiesOnly yes
    
    Host github-emu.com
        Hostname github.com
        IdentityFile ~/.ssh/id_ed25519-emu
        IdentitiesOnly yes
    

    メモ

           `IdentitiesOnly`行により、ssh-agent が複数のキーを読み込んだ場合、ssh は接続時に正しいキーを使用します。
    
  4. 次のコマンドを実行して SSH 構成をテストし、個人用アカウントに関連付けられている SSH キーを使用して接続します。詳細については 、AUTOTITLE を参照してください

    Shell
    ssh -T git@github.com
    

    GitHub SSH キーを使用し、(マネージド ユーザーを含む Enterprise) に接続できるかどうかを確認します

    Shell
    ssh -T git@github-emu.com
    
  5. マネージド ユーザーを含む組織 にリポジトリをダウンロードまたはアップロードするときに、正しいキーを使用するように git に指示します。 マネージド ユーザーを含む Enterprise、1. GitHub の右上隅にあるプロフィール画像をクリックしてから、[ Your organizations] をクリックします。 内の organization (組織) を一覧表示するには:

    1. 一覧表示されている組織ごとに、git ホストを使用するようにgithub-emu.comに指示します。

    たとえば、いずれかの組織がoctocat-emu呼び出された場合、git組織内のリポジトリのホスト github-emu.comを使用するようにoctocat-emuに指示するには、次のコマンドを実行します。

    Shell
    git config --global url."git@github-emu.com:octocat-emu/".insteadOf "git@github.com:octocat-emu/"
    

現在、SSH を使用してリポジトリを複製する際、octocat-emu 組織において git は個人キーではなく、マネージド ユーザーを含む Enterprise に関連付けられた SSH キーを使用します。

次のステップ

参考情報については、「個人用アカウントのリファレンス」をご覧ください。