Skip to main content
We publish frequent updates to our documentation, and translation of this page may still be in progress. For the most current information, please visit the English documentation.

从 GitHub.com 导出迁移数据

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

在 GitHub 上准备源组织

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

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

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

导出组织的仓库

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

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

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

生成迁移存档

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

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

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

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

    • 身份验证的访问令牌。
    • 要迁移的存储库列表
      curl -H "Authorization: Bearer GITHUB_ACCESS_TOKEN" \
      -X POST \
      -H "Accept: application/vnd.github+json" \
      -d'{"lock_repositories":true,"repositories":["orgname/reponame", "orgname/reponame"]}' \
      https://api.github.com/orgs/orgname/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/orgname/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/orgname/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/orgname/migrations/id/archive
  6. 若要准备存档的迁移数据以导入到 GitHub Enterprise Server 实例中,请参阅“准备将数据迁移到企业”。