跳至主要内容

从 GitHub.com 导出迁移数据

您可以使用 API 从 GitHub.com 上的组织导出迁移数据,选择要迁移的仓库,然后生成一个迁移存档,您可以将其导入到 GitHub Enterprise Server 实例中。

准备 GitHub 上的源组织

  1. 确保您对源组织的仓库具有 所有者权限

  2. 在 GitHub.com 上 生成一个访问令牌,并赋予其 repoadmin:org 范围。

  3. 为了最大程度地减少停机时间,请列出您要从源实例中导出的仓库。您可以使用一个文本文件一次添加多个仓库到导出中,该文件在单独的行上列出每个仓库的 URL。

导出组织的仓库

注意:迁移后,fork 关系不会保留。

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

迁移 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,它代表您的迁移。您将在后续调用迁移 API 时需要它。

  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”。