跳至主要内容

管理多个账户

如果您在同一工作站上为多个账户的项目做贡献,您可以修改 Git 配置以简化贡献流程。

平台导航

使用 HTTPS 和个人访问令牌对多个账户进行贡献

或者,如果您想为两个账户都使用 HTTPS 协议,您可以为每个账户创建不同的个人访问令牌,并通过为每个仓库配置 Git 来存储不同的凭据。

  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
      
  4. 要配置 Git 为您在 GitHub 上访问的每个仓库的完整远程 URL 缓存凭据,请输入以下命令。

    Shell
    git config --global credential.https://github.com.useHttpPath true
    
  5. 为每个账户创建一个专用的(经典)个人访问令牌,范围为 repo。或者,为您每个账户以及您所在的每个组织创建一个细粒度个人访问令牌,该令牌能够访问所需的仓库并拥有对仓库内容的读写权限。更多信息,请参见 管理您的个人访问令牌

  6. 第一次使用 Git 克隆仓库或访问已克隆仓库的数据时,Git 会请求凭据。请提供对该仓库有访问权限的账户的个人访问令牌。

    Git 将根据仓库的完整远程 URL 缓存个人访问令牌,您随后即可使用正确的账户在 GitHub.com 上访问并写入仓库数据。

  1. 打开 Git Bash。

  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
    
    • 如果输出为 wincred,则表示您正在使用 Windows 凭据管理器。要清除凭据,请输入以下命令。

      Shell
      cmdkey /delete:LegacyGeneric:target=git:https://github.com
      
  4. 要配置 Git 为您在 GitHub 上访问的每个仓库的完整远程 URL 缓存凭据,请输入以下命令。

    Shell
    git config --global credential.https://github.com.useHttpPath true
    
  5. 为每个账户创建一个专用的(经典)个人访问令牌,范围为 repo。或者,为您每个账户以及您所在的每个组织创建一个细粒度个人访问令牌,该令牌能够访问所需的仓库并拥有对仓库内容的读写权限。更多信息,请参见 管理您的个人访问令牌

  6. 第一次使用 Git 克隆仓库或访问已克隆仓库的数据时,Git 会请求凭据。请提供对该仓库有访问权限的账户的个人访问令牌。

    Git 将根据仓库的完整远程 URL 缓存个人访问令牌,您随后即可使用正确的账户在 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
    
  4. 要配置 Git 为您在 GitHub 上访问的每个仓库的完整远程 URL 缓存凭据,请输入以下命令。

    Shell
    git config --global credential.https://github.com.useHttpPath true
    
  5. 为每个账户创建一个专用的(经典)个人访问令牌,范围为 repo。或者,为您每个账户以及您所在的每个组织创建一个细粒度个人访问令牌,该令牌能够访问所需的仓库并拥有对仓库内容的读写权限。更多信息,请参见 管理您的个人访问令牌

  6. 第一次使用 Git 克隆仓库或访问已克隆仓库的数据时,Git 会请求凭据。请提供对该仓库有访问权限的账户的个人访问令牌。

    Git 将根据仓库的完整远程 URL 缓存个人访问令牌,您随后即可使用正确的账户在 GitHub.com 上访问并写入仓库数据。

使用 SSH 和 GIT_SSH_COMMAND 对多个账户进行贡献

如果您想为两个账户都使用 SSH 协议,可以为每个账户使用不同的 SSH 密钥。有关使用 SSH 的更多信息,请参见 使用 SSH 连接到 GitHub

要为克隆到工作站的不同仓库使用不同的 SSH 密钥,您必须为 Git 操作编写一个 shell 包装函数。该函数应执行以下步骤。

  1. 使用类似 git config --get remote.origin.url 的命令确定仓库的完整所有者名称。
  2. 选择用于身份验证的正确 SSH 密钥。
  3. 相应地修改 GIT_SSH_COMMAND。有关 GIT_SSH_COMMAND 的更多信息,请参见 Git 文档中的 环境变量

例如,下面的命令将 GIT_SSH_COMMAND 环境变量设置为指定使用位于 PATH/TO/KEY/FILE 的私钥文件进行身份验证,以克隆 GitHub.com 上名为 OWNER/REPOSITORY 的仓库。

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

使用 SSH 和多个密钥对多个账户进行贡献

如果您是受管用户企业的成员,同时希望使用个人账户在企业之外进行协作,则可以为每个账户使用不同的 SSH 密钥。有关使用 SSH 的更多信息,请参见 使用 SSH 连接到 GitHub

警告

您不能使用同一个 SSH 密钥同时对企业内部(受管用户组织)和企业外部的仓库进行贡献。

  1. 为企业内部受管用户组织的仓库生成不同的 SSH 密钥。请参见 生成新的 SSH 密钥并将其添加到 ssh-agent。保存密钥时,请使用不同于现有密钥的文件名(例如,在建议的文件名后添加 -emu)。

  2. 将新的 ssh 密钥添加到您的受管用户账户。请参见 将新的 SSH 密钥添加到您的 GitHub 账户

  3. 配置您的 SSH 配置文件 ~/.ssh/config 以使用不同的密钥。例如,如果您的个人 SSH 密钥是 ~/.ssh/id_ed25519,而企业受管用户的 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 密钥进行连接——有关详细信息,请参见 测试您的 SSH 连接

    Shell
    ssh -T git@github.com
    

    测试是否可以使用企业受管用户的 SSH 密钥连接到(GitHub)。

    Shell
    ssh -T git@github-emu.com
    
  5. 告知 git 在下载或上传受管用户组织中的仓库时使用正确的密钥。要列出企业受管用户中的组织,

    1. 在 GitHub 右上角,点击您的个人头像,然后点击 组织
    2. 对列出的每个组织,告知 git 使用 github-emu.com 主机。

    例如,如果您的某个组织名为 octocat-emu,则要告知 gitoctocat-emu 组织中的仓库使用 github-emu.com 主机,请运行以下命令

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

现在,当您使用 SSH 克隆 octocat-emu 组织中的仓库时,git 将使用与企业受管用户关联的 SSH 密钥,而不是您的个人密钥。

后续步骤

有关参考信息,请参阅 个人账户参考

© . This site is unofficial and not affiliated with GitHub, Inc.