关于占位用户
使用 GitHub Enterprise Importer 运行迁移后,已迁移仓库中的所有用户活动(Git 提交除外)都会归因于称为人偶的占位身份。
每个占位用户只有显示名称,该名称来源于源代码库中的显示名称。占位用户没有组织成员资格或仓库访问权限。占位用户始终使用相同的头像——幽灵 Octocat,并在显示名称后附加 “mannequin” 标签。

您可以使用 GitHub CLI 或在浏览器中将每个占位用户的历史重新归属给组织成员。如果使用 GitHub CLI,可以批量认领占位用户。
认领是可选的,可在迁移完成后随时进行。因此,您可以在认领之前让团队开始在已迁移的仓库中工作。
占位用户不用于 Git 提交的归属。有关提交归属的更多信息,请参阅下方的 管理 Git 提交的作者身份。
回收人偶
您可以使用 GitHub CLI(推荐)或浏览器来认领占位用户。
默认情况下,认领占位用户会向目标用户发送归属邀请。
目标用户可以选择接受或拒绝邀请。用户接受归属邀请后,之前归属于该占位用户的所有贡献将转移到该用户名下。在以后向同一组织的迁移中,来自同一占位用户的贡献将自动为同一用户重新归属。
如果您的组织使用企业托管用户(Enterprise Managed Users),并且选择使用 GitHub CLI 认领占位用户,您可以选择跳过邀请流程,直接在未获用户批准的情况下立即认领该占位用户。
注意
- 在将仓库转移到其他组织之后,您无法认领占位用户。如果您希望在迁移后将仓库转移到其他组织,必须在转移之前先认领占位用户。
- 认领占位用户时,只能面向已存在的组织成员。尝试认领之前,请确认您要邀请的 GitHub 用户已经是组织成员。
GitHub Enterprise Importer 不会迁移用户对仓库的访问权限。认领占位用户后,如果这些用户尚未通过团队成员资格获得相应的仓库访问权限,则需单独授予访问权限。更多信息请参见 管理个人对组织仓库的访问权限。
使用 GitHub CLI 认领占位用户(推荐)
您可以使用 GitHub CLI 单独或批量认领占位用户。有关安装和更新 GitHub CLI 迁移扩展的更多信息,请参见 关于 GitHub Enterprise Importer。
您需要使用的具体命令取决于所使用的 GitHub CLI 扩展。
使用 GEI 扩展认领占位用户
如果迁移源是 GitHub 产品,您可以使用 GitHub CLI 的 GEI 扩展来认领占位用户。
- 如果尚未为具有目标组织访问权限的个人访问令牌(PAT)设置
GH_PAT环境变量,请在以下每个命令后添加--github-target-pat TOKEN,将TOKEN替换为个人访问令牌。有关个人访问令牌的要求,请参见 在 GitHub 产品之间迁移的访问管理。 - 如果您迁移到 GHE.com,请添加
--target-api-url TARGET-API-URL,其中 TARGET-API-URL 是您企业子域的基础 API URL。例如:https://api.octocorp.ghe.com。
-
可选:若要批量认领占位用户,请创建一个 CSV 文件,将占位用户映射到组织成员。
-
要生成包含组织中占位用户列表的 CSV 文件,请使用
gh gei generate-mannequin-csv命令,将DESTINATION替换为目标组织名称,将FILENAME替换为生成的 CSV 文件名。可选:若要包括已认领的占位用户,请添加
--include-reclaimed标志。Shell gh gei generate-mannequin-csv --github-target-org DESTINATION --output FILENAME.csv
gh gei generate-mannequin-csv --github-target-org DESTINATION --output FILENAME.csv -
编辑 CSV 文件,为每个占位用户填写对应的组织成员用户名。
-
保存文件。
-
-
要认领占位用户,请使用
gh gei reclaim-mannequin命令。-
要使用之前创建的映射文件批量认领占位用户,请将
DESTINATION替换为目标组织,将FILENAME替换为映射文件的文件名。Shell gh gei reclaim-mannequin --github-target-org DESTINATION --csv FILENAME.csv
gh gei reclaim-mannequin --github-target-org DESTINATION --csv FILENAME.csv -
要认领单个占位用户,请将
DESTINATION替换为目标组织,将MANNEQUIN替换为占位用户的登录名,将USERNAME替换为对应的组织成员用户名。如果多个占位用户拥有相同的登录名,您可以将
--mannequin-user MANNEQUIN替换为--mannequin-ID ID,其中ID为占位用户的 ID。如果您的组织使用企业托管用户并希望跳过归属邀请、立即认领占位用户,请添加
--skip-invitation参数。Shell gh gei reclaim-mannequin --github-target-org DESTINATION --mannequin-user MANNEQUIN --target-user USERNAME
gh gei reclaim-mannequin --github-target-org DESTINATION --mannequin-user MANNEQUIN --target-user USERNAME
-
默认情况下,组织成员会通过电子邮件收到邀请,且在成员接受邀请之前,占位用户不会被认领。
使用 ADO2GH 扩展认领占位用户
如果迁移源是 Azure DevOps,您可以使用 GitHub CLI 的 ADO2GH 扩展来认领占位用户。
- 如果尚未为具有目标组织访问权限的个人访问令牌(PAT)设置
GH_PAT环境变量,请在以下每个命令后添加--github-target-pat TOKEN,将TOKEN替换为个人访问令牌。有关个人访问令牌的要求,请参见 管理访问。 - 如果您迁移到 GHE.com,请添加
--target-api-url TARGET-API-URL,其中 TARGET-API-URL 是您企业子域的基础 API URL。例如:https://api.octocorp.ghe.com。
-
可选:若要批量认领占位用户,请创建一个 CSV 文件,将占位用户映射到组织成员。
-
要生成包含组织中占位用户列表的 CSV 文件,请使用
gh ado2gh generate-mannequin-csv命令,将DESTINATION替换为目标组织,将FILENAME替换为生成的 CSV 文件名。可选:若要包括已认领的占位用户,请添加
--include-reclaimed标志。Shell gh ado2gh generate-mannequin-csv --github-org DESTINATION --output FILENAME.csv
gh ado2gh generate-mannequin-csv --github-org DESTINATION --output FILENAME.csv -
编辑 CSV 文件,为每个占位用户填写对应的组织成员用户名。
-
保存文件。
-
-
要认领占位用户,请使用
gh ado2gh reclaim-mannequin命令。-
要使用之前创建的映射文件批量认领占位用户,请将
DESTINATION替换为目标组织,将FILENAME替换为映射文件的文件名。Shell gh ado2gh reclaim-mannequin --github-org DESTINATION --csv FILENAME.csv
gh ado2gh reclaim-mannequin --github-org DESTINATION --csv FILENAME.csv -
要认领单个占位用户,请将
DESTINATION替换为目标组织,将MANNEQUIN替换为占位用户的登录名,将USERNAME替换为对应的组织成员用户名。如果多个占位用户拥有相同的登录名,您可以将
--mannequin-user MANNEQUIN替换为--mannequin-ID ID,其中ID为占位用户的 ID。如果您的组织使用企业托管用户并希望跳过归属邀请、立即认领占位用户,请添加
--skip-invitation参数。Shell gh ado2gh reclaim-mannequin --github-org DESTINATION --mannequin-user MANNEQUIN --target-user USERNAME
gh ado2gh reclaim-mannequin --github-org DESTINATION --mannequin-user MANNEQUIN --target-user USERNAME
-
默认情况下,组织成员会通过电子邮件收到邀请,且在成员接受邀请之前,占位用户不会被认领。
使用 BBS2GH 扩展认领占位用户
如果迁移源是 Bitbucket Server,您可以使用 GitHub CLI 的 BBS2GH 扩展来认领占位用户。
- 如果尚未为具有目标组织访问权限的个人访问令牌(PAT)设置
GH_PAT环境变量,请在以下每个命令后添加--github-target-pat TOKEN,将TOKEN替换为个人访问令牌。有关个人访问令牌的要求,请参见 从 Bitbucket Server 迁移的访问管理。 - 如果您迁移到 GHE.com,请添加
--target-api-url TARGET-API-URL,其中 TARGET-API-URL 是您企业子域的基础 API URL。例如:https://api.octocorp.ghe.com。
-
可选:若要批量认领占位用户,请创建一个 CSV 文件,将占位用户映射到组织成员。
-
要生成包含组织中占位用户列表的 CSV 文件,请使用
gh bbs2gh generate-mannequin-csv命令,将DESTINATION替换为目标组织,将FILENAME替换为生成的 CSV 文件名。可选:若要包括已认领的占位用户,请添加
--include-reclaimed标志。Shell gh bbs2gh generate-mannequin-csv --github-org DESTINATION --output FILENAME.csv
gh bbs2gh generate-mannequin-csv --github-org DESTINATION --output FILENAME.csv -
编辑 CSV 文件,为每个占位用户填写对应的组织成员用户名。
-
保存文件。
-
-
要认领占位用户,请使用
gh bbs2gh reclaim-mannequin命令。-
要使用之前创建的映射文件批量认领占位用户,请将
DESTINATION替换为目标组织,将FILENAME替换为映射文件的文件名。Shell gh bbs2gh reclaim-mannequin --github-org DESTINATION --csv FILENAME.csv
gh bbs2gh reclaim-mannequin --github-org DESTINATION --csv FILENAME.csv -
要认领单个占位用户,请将
DESTINATION替换为目标组织,将MANNEQUIN替换为占位用户的登录名,将USERNAME替换为对应的组织成员用户名。如果多个占位用户拥有相同的登录名,您可以将
--mannequin-user MANNEQUIN替换为--mannequin-ID ID,其中ID为占位用户的 ID。如果您的组织使用企业托管用户并希望跳过归属邀请、立即认领占位用户,请添加
--skip-invitation参数。Shell gh bbs2gh reclaim-mannequin --github-org DESTINATION --mannequin-user MANNEQUIN --target-user USERNAME
gh bbs2gh reclaim-mannequin --github-org DESTINATION --mannequin-user MANNEQUIN --target-user USERNAME
-
默认情况下,组织成员会通过电子邮件收到邀请,且在成员接受邀请之前,占位用户不会被认领。
在浏览器中认领占位用户
-
在 GitHub 页面右上角,点击您的头像,然后点击 组织。
-
点击即可选择组织。
-
在组织名称下方,点击 设置。如果看不到 “设置” 选项卡,请打开 下拉菜单,然后点击 **设置**。

-
在侧边栏的 “访问” 部分,点击 导入/导出。
-
在想要认领的占位用户右侧,点击 重新归属。
-
在搜索框中输入您想将该占位用户的贡献归属给的组织成员的用户名,然后点击该成员。
注意
只能向已经是组织成员的用户账户发送归属邀请。
-
点击 邀请。默认情况下,组织成员会通过电子邮件收到邀请,且在成员接受邀请之前,占位用户不会被认领。
查看归属邀请的状态
您可以查看组织中所有归属邀请的状态。
- 已邀请:已向用户发送邀请,但用户尚未回应。
- 已完成:用户已接受邀请,或已跳过邀请流程。用户的贡献已重新归属。
- 已拒绝:用户选择不接受占位用户的贡献归属。
-
在 GitHub 页面右上角,点击您的头像,然后点击 组织。
-
点击即可选择组织。
-
在组织名称下方,点击 设置。如果看不到 “设置” 选项卡,请打开 下拉菜单,然后点击 **设置**。

-
在侧边栏的 “访问” 部分,点击 导入/导出。
-
Under "在 “导入/导出” 中,点击 归属邀请。

管理 Git 提交的作者身份
Git 提交的作者身份与占位用户无关,不能通过认领占位用户来归属给 GitHub 用户。提交的作者身份是依据在 Git 中用于撰写提交的电子邮件地址来归属到 GitHub 上的用户账户。
在多数情况下,用户可以通过将用于撰写提交的电子邮件地址添加到其 GitHub 账户来把提交重新归属给自己。更多信息请参见 向 GitHub 账户添加电子邮件地址。
但是,如果使用企业托管用户(Enterprise Managed Users),用户无法向其 GitHub 账户添加电子邮件地址,因而无法重新归属 Git 提交。只有使用身份提供商(IdP)中用户的主电子邮件地址撰写的提交才会归属到托管用户账户。
此外,使用 GitHub 提供的 noreply 邮箱地址撰写的提交也无法重新归属,因为您无法手动向用户账户添加 noreply 邮箱地址。更多信息请参见 设置提交邮件地址。