About management of multiple accounts
In some cases, you may need to use multiple accounts on GitHub. For example, you may have a personal account for open source contributions, and your employer may also create and manage a user account for you within an enterprise.
You cannot use a 托管用户帐户 to contribute to public projects on GitHub.com, so you must contribute to those resources using your personal account. For more information, see About Enterprise Managed Users in the GitHub Enterprise Cloud documentation.
If you need to use multiple accounts, you can stay signed in to your accounts and switch between them. For example, switching between a personal account and a service account. For more information, see 在帐户之间切换.
If you want to use one workstation to contribute from both accounts, you can simplify contribution with Git by using a mixture of protocols to access repository data, or by using credentials on a per-repository basis.
警告
Be mindful when you use one workstation to contribute to two separate accounts. Management of two or more accounts can increase the chance of mistakenly leaking internal code to the public.
If you aren't required to use a 托管用户帐户, GitHub recommends that you use one personal account for all your work on GitHub.com. With a single personal account, you can contribute to a combination of personal, open source, or professional projects using one identity. Other people can invite the account to contribute to both individual repositories and repositories owned by an organization, and the account can be a member of multiple organizations or enterprises.
Contributing to two accounts using HTTPS and SSH
If you contribute with two accounts from one workstation, you can access repositories by using a different protocol and credentials for each account.
Git can use either the HTTPS or SSH protocol to access and update data in repositories on GitHub. The protocol you use to clone a repository determines which credentials your workstation will use to authenticate when you access the repository. With this approach to account management, you store the credentials for one account to use for HTTPS connections and upload an SSH key to the other account to use for SSH connections.
You can find both the HTTPS or an SSH URLs for cloning a repository on the repository's page. For more information, see 克隆仓库.
For more information about the use of SSH to access repositories, see 通过 SSH 连接到 GitHub.
Contributing to multiple accounts using HTTPS and personal access tokens
Alternatively, if you want to use the HTTPS protocol for both accounts, you can use different personal access tokens for each account by configuring Git to store different credentials for each repository.
-
打开终端。
-
若要确认凭据管理器的使用,请输入以下命令并记下输出。
Shell git config --get credential.helper
git config --get credential.helper
-
如果输出确认在使用凭据管理器,请为凭据管理器清除存储的凭据。
-
如果输出不包含凭据管理器的名称,则未配置凭据管理器,可以继续执行下一步。
-
If the output is
osxkeychain
, you're using the macOS keychain. To clear the credentials, you can use the credential helper on the command line:$ git credential-osxkeychain erase host=github.com protocol=https > [Press Return] >
-
如果输出为
manager
(在旧版本中为manager-core
),则你使用的是 Git 凭据管理器。 若要清除凭据,请运行以下命令。Shell echo "protocol=https\nhost=github.com" | git credential-manager erase
echo "protocol=https\nhost=github.com" | git credential-manager erase
-
-
若要将 Git 配置为缓存你在 GitHub 上访问的每个存储库的完整远程 URL 的凭据,请输入以下命令。
Shell git config --global credential.https://github.com.useHttpPath true
git config --global credential.https://github.com.useHttpPath true
-
请为每个帐户创建具有
repo
范围的专用 personal access token (classic)。 或者,对于每个帐户以及你所属的每个组织,请创建一个可访问所需存储库并对存储库内容具有读取和写入权限的 fine-grained personal access token。 有关详细信息,请参阅“管理个人访问令牌”。 -
首次使用 Git 克隆存储库或访问已克隆的存储库中的数据时,Git 会请求凭据。 为可访问存储库的帐户提供 personal access token。
Git 将根据存储库的完整远程 URL 缓存 personal access token,你将能够使用正确的帐户在 GitHub.com 上访问和写入存储库数据。
-
Open Git Bash.
-
若要确认凭据管理器的使用,请输入以下命令并记下输出。
Shell git config --get credential.helper
git config --get credential.helper
-
如果输出确认在使用凭据管理器,请为凭据管理器清除存储的凭据。
- 如果输出不包含凭据管理器的名称,则未配置凭据管理器,可以继续执行下一步。
- 如果输出为
manager
(在旧版本中为manager-core
),则你使用的是 Git 凭据管理器。 若要清除凭据,请运行以下命令。
Shell echo "protocol=https`nhost=github.com" | git credential-manager erase
echo "protocol=https`nhost=github.com" | git credential-manager erase
-
If the output is
wincred
, you're using the Windows Credential Manager. To clear the credentials, enter the following command.Shell cmdkey /delete:LegacyGeneric:target=git:https://github.com
cmdkey /delete:LegacyGeneric:target=git:https://github.com
-
若要将 Git 配置为缓存你在 GitHub 上访问的每个存储库的完整远程 URL 的凭据,请输入以下命令。
Shell git config --global credential.https://github.com.useHttpPath true
git config --global credential.https://github.com.useHttpPath true
-
请为每个帐户创建具有
repo
范围的专用 personal access token (classic)。 或者,对于每个帐户以及你所属的每个组织,请创建一个可访问所需存储库并对存储库内容具有读取和写入权限的 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 凭据管理器。 若要清除凭据,请运行以下命令。
Shell echo "protocol=https\nhost=github.com" | git credential-manager erase
echo "protocol=https\nhost=github.com" | git credential-manager erase
-
若要将 Git 配置为缓存你在 GitHub 上访问的每个存储库的完整远程 URL 的凭据,请输入以下命令。
Shell git config --global credential.https://github.com.useHttpPath true
git config --global credential.https://github.com.useHttpPath true
-
请为每个帐户创建具有
repo
范围的专用 personal access token (classic)。 或者,对于每个帐户以及你所属的每个组织,请创建一个可访问所需存储库并对存储库内容具有读取和写入权限的 fine-grained personal access token。 有关详细信息,请参阅“管理个人访问令牌”。 -
首次使用 Git 克隆存储库或访问已克隆的存储库中的数据时,Git 会请求凭据。 为可访问存储库的帐户提供 personal access token。
Git 将根据存储库的完整远程 URL 缓存 personal access token,你将能够使用正确的帐户在 GitHub.com 上访问和写入存储库数据。
Contributing to multiple accounts using SSH and GIT_SSH_COMMAND
If you want to use the SSH protocol for both accounts, you can use different SSH keys for each account. For more information about using SSH, see 通过 SSH 连接到 GitHub.
To use a different SSH key for different repositories that you clone to your workstation, you must write a shell wrapper function for Git operations. The function should perform the following steps.
- Determine the repository's full name with owner, using a command such as
git config --get remote.origin.url
. - Choose the correct SSH key for authentication.
- Modify
GIT_SSH_COMMAND
accordingly. For more information aboutGIT_SSH_COMMAND
, see Environment Variables in the Git documentation.
For example, the following command sets the GIT_SSH_COMMAND
environment variable to specify an SSH command that uses the private key file at PATH/TO/KEY/FILE for authentication to clone the repository named OWNER/REPOSITORY on GitHub.com.
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