Skip to main content

此版本的 GitHub Enterprise Server 已于以下日期停止服务 2024-07-09. 即使针对重大安全问题,也不会发布补丁。 为了获得更好的性能、更高的安全性和新功能,请升级到最新版本的 GitHub Enterprise。 如需升级帮助,请联系 GitHub Enterprise 支持

从 GitHub.com 导出迁移数据

您可以使用 API 选择要迁移的创建,然后生成可导入到 GitHub Enterprise Server 实例的迁移存档,从而从 GitHub.com 上的组织导出迁移数据。

在 GitHub

上准备源组织

  1. 确保对源组织的存储库拥有所有者权限

  2. 在 GitHub.com 上生成具有 repoadmin:org 作用域的访问令牌

  3. 为尽量减少停机,请创建要从源实例导出的仓库列表。 您可以使用每行列出一个仓库 URL 的文本文件一次性导出多个仓库。

导出组织的仓库

注意:分支关系在迁移后不会持续。

若要从 GitHub.com 导出存储库数据,请使用迁移 API

Migrations API 目前正处于预览阶段,这意味着端点和参数未来可能发生变化。

生成迁移存档

注意:锁定存储库会阻止对存储库的所有写入访问。 您不能将新团队或协作者与锁定的仓库相关联。

如果您执行的试用版,则无需锁定仓库。 从正在使用的存储库迁移数据时,GitHub 强烈建议锁定存储库。 有关详细信息,请参阅“关于 ghe-migrator”。

  1. 向您的组织的成员发送通知,告诉他们您将执行迁移。 导出可能需要数分钟的时间,具体取决于要导出的仓库数量。 包括导入的完整迁移可能需要数小时的时间,因此我们建议执行试运行,以便确定完整过程所需的时间。 有关详细信息,请参阅“关于 ghe-migrator”。

  2. 通过向迁移终结点发送 POST 请求来启动迁移。 需要:

    • 身份验证的访问令牌。

    • 要迁移的存储库列表

      curl -H "Authorization: Bearer GITHUB_ACCESS_TOKEN" \
      -X POST \
      -H "Accept: application/vnd.github+json" \
      -d'{"lock_repositories":true,"repositories":["ORG_NAME/REPO_NAME", "ORG_NAME/REPO_NAME"]}' \
      https://api.github.com/orgs/ORG_NAME/migrations
      
    • 如果要在迁移存储库之前锁定存储库,请确保将 lock_repositories 设置为 true。 强烈建议执行此操作。

    • 可以通过将 exclude_attachments: true 传递给终结点来排除文件附件。 文件附件可能很大,可能不必要地胀大您的最终迁移存档。 存档的最终大小必须小于 20 GB。

    此请求将返回唯一的 id,用于表示你的迁移。 后续调用 Migrations API 时需要使用此 id。

  3. GET 请求发送到迁移状态终结点,以获取迁移状态。 需要:

    • 身份验证的访问令牌。

    • 迁移唯一的 id

      curl -H "Authorization: Bearer GITHUB_ACCESS_TOKEN" \
      -H "Accept: application/vnd.github+json" \
      https://api.github.com/orgs/ORG_NAME/migrations/ID
      

    迁移可能处于以下状态之一:

    • pending,表示迁移尚未开始。
    • exporting,表示迁移正在进行中。
    • exported,表示迁移已成功完成。
    • failed,表示迁移失败。
  4. 导出迁移后,通过向迁移下载终结点发送 GET 请求来下载迁移存档。 需要:

    • 身份验证的访问令牌。

    • 迁移唯一的 id

      curl -H "Authorization: Bearer GITHUB_ACCESS_TOKEN" \
      -H "Accept: application/vnd.github+json" \
      -L -o migration_archive.tar.gz \
      https://api.github.com/orgs/ORG_NAME/migrations/ID/archive
      
  5. 迁移存档将在七天后自动删除。 如果希望更快地将其删除,可以向迁移存档删除终结点发送 DELETE 请求。 需要:

    • 身份验证的访问令牌。

    • 迁移唯一的 id

      curl -H "Authorization: Bearer GITHUB_ACCESS_TOKEN" \
      -X DELETE \
      -H "Accept: application/vnd.github+json" \
      https://api.github.com/orgs/ORG_NAME/migrations/ID/archive
      
  6. 要准备存档的迁移数据以导入到 GitHub Enterprise Server 实例中,请参阅“将数据迁移到 GitHub Enterprise Server”。