Skip to main content

转让仓库

您可以将仓库转让给其他用户或组织帐户。

关于仓库转让

当你将存储库转移给新所有者时,他们可以立即管理存储库的内容、议题、拉取请求、版本、projects (classic) 和设置。 还可以在转移存储库时更改存储库名称。 有关详细信息,请参阅“重命名仓库”。

存储库传输的先决条件:

  • 当你将你拥有的存储库转让给另一个个人帐户时,新所有者将收到一封确认电子邮件。 确认电子邮件包含接受转让的说明。 如果新所有者在一天之内没有接受转让,则邀请将过期。
  • 要将您拥有的仓库转让给一个组织,您必须拥有在目标组织中创建仓库的权限。
  • 目标帐户不得具有相同名称的仓库,或位于同一网络中的复刻。
  • 仓库原来的所有者将添加为已转让仓库的协作者。 转移的存储库的其他协作者保持不变。
  • 无法转移来自专用上游网络分叉的单一存储库。

如果将专用存储库转移到 GitHub Free 用户或组织帐户,该存储库将无法访问受保护的分支和 GitHub Pages 等功能。 有关详细信息,请参阅“GitHub 的计划”。

如果传输的存储库包含 GitHub Marketplace 上列出的操作,或者这些存储库在传输前一周内超过 100 次克隆或超过 100 次使用 GitHub Actions,则在传输存储库时,GitHub 将永久停用所有者名称和存储库名称组合 (OWNER/REPOSITORY-NAME)。 如果尝试使用已停用的所有者名称和存储库名称组合创建存储库,你将看到错误:“存储库 REPOSITORY_NAME 已停用,无法重复使用。”

随仓库一起转让的有哪些内容?

当您转让仓库时,其议题、拉取请求、wiki、星号和查看者也将转让。 如果转让的仓库包含 web 挂钩、服务、密码或部署密钥,它们将在转让完成后保持关联状态。 关于提交的 Git 信息(包括贡献)都将保留。 此外:

  • 如果转让的仓库是复刻,则它仍与上游仓库关联。

  • 如果转让的仓库有任何复刻,则这些复刻在转让完成后仍与该仓库关联。

  • 如果转让的仓库使用 Git Large File Storage,则所有 Git LFS 对象均自动移动。 此转移在后台进行,因此如果您有大量的 Git LFS 对象或者如果 Git LFS 对象本身很大,则进行转移可能需要一些时间。转让使用 Git LFS 的仓库之前,确保接收帐户有足够的数据包用来存储您将移动的 Git LFS 对象。 有关为个人帐户添加存储的详细信息,请参阅“升级 Git Large File Storage”。

  • 存储库在两个个人帐户之间转让时,议题分配保持不变。 将存储库从个人帐户转让给组织时,分配给组织中该成员的议题保持不变,所有其他议题受理人都将被清除。 只允许组织中的所有者创建新的议题分配。 将存储库从组织转让给个人帐户时,只有分配给存储库所有者的议题保留,所有其他议题受理人都将被清除。

  • 如果转让的仓库包含 GitHub Pages 站点,则指向 Web 上 Git 仓库和通过 Git 活动的链接将重定向。 不过,我们不会重定向与仓库关联的 GitHub Pages。

  • 指向以前仓库位置的所有链接均自动重定向到新位置。 在转移的存储库上使用 git clonegit fetchgit push 时,这些命令将重定向到新的存储库位置或 URL。 不过,为了避免混淆,我们强烈建议将任何现有的本地克隆副本更新为指向新仓库 URL。 可以通过在命令行上使用 git remote 完成此操作:

    git remote set-url origin NEW_URL
    

    警告:如果在上一个存储库位置创建新的存储库或分支,则将停用向已转移存储库的重定向。 可以通过重命名或删除新的存储库或分支来重新激活它们。

  • 将存储库从组织转让给个人帐户时,不会转让存储库的只读协作者。 这是因为协作者不能对个人帐户拥有的存储库具有只读权限。 有关存储库权限级别的详细信息,请参阅“个人帐户存储库的权限级别”和“组织的存储库角色”。

  • 有权通过赞助层访问存储库的发起人可能会受到影响。 有关详细信息,请参阅“管理赞助等级”。

  • 与存储库 关联的包可能会被转移,或者可能会丢失与存储库的链接,具体取决于它们所属的注册表。 有关详细信息,请参阅“关于 GitHub Packages 的权限”。

有关详细信息,请参阅“管理远程仓库”。

仓库转让和组织

要将仓库转让给组织,您必须在接收组织中具有仓库创建权限。 如果组织所有者已禁止组织成员创建仓库,则只有组织所有者能够转让仓库出入组织。

将仓库转让给组织后,组织的默认仓库权限设置和默认成员资格权限将应用到转让的仓库。

转让您的个人帐户拥有的仓库

你可以将存储库转让给接受存储库转让的任何个人帐户。 在两个个人帐户之间转让存储库时,原来的存储库所有者和协作者将自动添加为新存储库的协作者。

如果您在私有仓库中发布了 GitHub Pages 站点并添加了自定义域,则转让仓库之前,您可能想要删除或更新 DNS 记录以避免域接管风险。 有关详细信息,请参阅“管理 GitHub Pages 站点的自定义域”。

  1. 在 GitHub.com 上,导航到存储库的主页。

  2. 在存储库名称下,单击 “设置”。 如果看不到“设置”选项卡,请选择“”下拉菜单,然后单击“设置”********。

    存储库标头的屏幕截图,其中显示了选项卡。 “设置”选项卡以深橙色边框突出显示。

  3. 在页面底部的“危险区域”部分中,单击“转移”。

  4. 了解有关转移存储库的信息,然后在“新所有者”下选择如何指定新所有者。

    • 若要选择你的一个组织,可选择“选择我的一个组织”。

      • 选择下拉菜单,然后单击组织。

      • (可选)在“存储库名称”字段中,键入存储库的新名称。

        注意:必须是目标组织的所有者才能重命名存储库。

    • 若要指定组织或用户名,请选择“指定组织或用户名”,然后键入组织名称或新所有者的用户名。

  5. 根据新所有者的 GitHub 订阅,阅读有关可能失去功能的警告。

  6. 在“键入 REPOSITORY NAME 以确认”后,键入要传输的存储库的名称,然后单击“我了解,传输此存储库”。

转让您的组织拥有的仓库

如果你具有组织中的所有者权限或组织其中一个存储库的管理员权限,你可以将组织拥有的存储库转让给个人帐户或其他组织。

  1. 在拥有存储库的组织中登录你具有管理员或所有者权限的个人帐户。

  2. 在 GitHub.com 上,导航到存储库的主页。

  3. 在存储库名称下,单击 “设置”。 如果看不到“设置”选项卡,请选择“”下拉菜单,然后单击“设置”********。

    存储库标头的屏幕截图,其中显示了选项卡。 “设置”选项卡以深橙色边框突出显示。

  4. 在页面底部的“危险区域”部分中,单击“转移”。

  5. 了解有关转移存储库的信息,然后在“新所有者”下选择如何指定新所有者。

    • 若要选择你的一个组织,可选择“选择我的一个组织”。

      • 选择下拉菜单,然后单击组织。

      • (可选)在“存储库名称”字段中,键入存储库的新名称。

        注意:必须是目标组织的所有者才能重命名存储库。

    • 若要指定组织或用户名,请选择“指定组织或用户名”,然后键入组织名称或新所有者的用户名。

  6. 根据新所有者的 GitHub 订阅,阅读有关可能失去功能的警告。

  7. 在“键入 REPOSITORY NAME 以确认”后,键入要传输的存储库的名称,然后单击“我了解,传输此存储库”。