跳至主要内容

迁移仓库

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

关于仓库转移

当您将仓库转移到新所有者时,他们可以立即管理仓库的内容、问题、拉取请求、发布、项目(经典)和设置。您也可以在转移仓库时更改仓库名称。有关更多信息,请参阅“重命名仓库”。

仓库转移的先决条件

  • 当您将自己拥有的仓库转移到另一个个人帐户时,新所有者将收到一封确认电子邮件。确认电子邮件包含接受转移的说明。如果新所有者在一天内未接受转移,则邀请将过期。
  • 要将您拥有的仓库转移到组织,您必须有权在目标组织中创建仓库。
  • 目标帐户不得具有与之同名的仓库,或在同一网络中存在分支。
  • 仓库的原始所有者将被添加为转移仓库的合作者。转移仓库的其他合作者将保持不变。
  • 从私有上游网络分叉的单个仓库无法转移。

如果您将私有仓库转移到 GitHub 免费用户或组织帐户,则仓库将失去对受保护分支和 GitHub Pages 等功能的访问权限。有关更多信息,请参阅“GitHub 的计划”。

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

仓库转移了什么?

当您转移仓库时,其问题、拉取请求、Wiki、星标和观察者也会被转移。如果转移的仓库包含 Webhook、服务、秘密或部署密钥,它们将在转移完成后保持关联。有关提交的 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 包的权限”。

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

仓库转移和组织

要将仓库转移到组织,您必须在接收组织中拥有仓库创建权限。如果组织所有者已禁用组织成员创建仓库,则只有组织所有者可以将仓库转移到组织或从组织中转移出去。

仓库转移到组织后,组织的默认仓库权限设置和默认成员权限将应用于转移的仓库。

转移个人帐户拥有的仓库

您可以将您的仓库转移到任何接受您的仓库转移的个人帐户。当仓库在两个个人帐户之间转移时,原始仓库所有者和协作者将自动被添加为新仓库的协作者。

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

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

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

    Screenshot of a repository header showing the tabs. The "Settings" tab is highlighted by a dark orange outline.

  3. 在页面底部,“危险区域”部分,点击转移

  4. 阅读有关转移仓库的信息,然后在“新所有者”下,选择如何指定新所有者。

    • 要选择您的其中一个组织,请选择选择我的其中一个组织

      • 选择下拉菜单并点击一个组织。

      • 可选地,在“仓库名称”字段中,输入仓库的新名称。

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

    • 要指定一个组织或用户名,请选择指定一个组织或用户名,然后输入组织名称或新所有者的用户名。

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

  6. 输入仓库名称以确认之后,输入您要转移的仓库的名称,然后点击我理解,转移此仓库

转移由您的组织拥有的仓库

如果您在拥有仓库的组织中拥有所有者权限或对其中一个仓库的管理员权限,您可以将由您的组织拥有的仓库转移到您的个人帐户或另一个组织。

  1. 登录到您在拥有仓库的组织中拥有管理员或所有者权限的个人帐户。

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

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

    Screenshot of a repository header showing the tabs. The "Settings" tab is highlighted by a dark orange outline.

  4. 在页面底部,“危险区域”部分,点击转移

  5. 阅读有关转移仓库的信息,然后在“新所有者”下,选择如何指定新所有者。

    • 要选择您的其中一个组织,请选择选择我的其中一个组织

      • 选择下拉菜单并点击一个组织。

      • 可选地,在“仓库名称”字段中,输入仓库的新名称。

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

    • 要指定一个组织或用户名,请选择指定一个组织或用户名,然后输入组织名称或新所有者的用户名。

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

  7. 输入仓库名称以确认之后,输入您要转移的仓库的名称,然后点击我理解,转移此仓库