title: Exporting migration data from GitHub.com
intro: >-
You can export migration data from an organization on {% data
variables.product.prodname_dotcom_the_website %} by using the API to select
repositories to migrate, then generating a migration archive that you can
import into a {% data variables.product.prodname_ghe_server %} instance.
redirect_from:
- /enterprise/admin/guides/migrations/exporting-migration-data-from-github-com
- /enterprise/admin/migrations/exporting-migration-data-from-githubcom
- /enterprise/admin/migrations/preparing-the-githubcom-source-organization
- >-
/enterprise/admin/migrations/exporting-the-githubcom-organizations-repositories
- >-
/enterprise/admin/guides/migrations/preparing-the-github-com-source-organization
- >-
/enterprise/admin/guides/migrations/exporting-the-github-com-organization-s-repositories
- /enterprise/admin/user-management/exporting-migration-data-from-githubcom
- /admin/user-management/exporting-migration-data-from-githubcom
- >-
/admin/user-management/migrating-data-to-and-from-your-enterprise/exporting-migration-data-from-githubcom
versions:
fpt: '*'
ghec: '*'
ghes: '*'
type: how_to
topics:
- API
- Enterprise
- Migration
shortTitle: Export from GitHub.com
Preparing the source organization on {% data variables.product.prodname_dotcom %}
Ensure that you have owner permissions on the source organization's repositories.
{% data reusables.enterprise_migrations.token-generation %} on {% data variables.product.prodname_dotcom_the_website %}.
{% data reusables.enterprise_migrations.make-a-list %}
Exporting the organization's repositories
{% data reusables.enterprise_migrations.fork-persistence %}
To export repository data from {% data variables.product.prodname_dotcom_the_website %}, use the Migrations API.
The Migrations API is currently in a preview period, which means that the endpoints and parameters may change in the future.
Generating a migration archive
{% data reusables.enterprise_migrations.locking-repositories %}
Notify members of your organization that you'll be performing a migration. The export can take several minutes, depending on the number of repositories being exported. The full migration including import may take several hours so we recommend doing a trial run in order to determine how long the full process will take. For more information, see AUTOTITLE.
Start a migration by sending a
POSTrequest to the migration endpoint. You'll need:Your access token for authentication.
A list of the repositories you want to migrate:
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/migrationsIf you want to lock the repositories before migrating them, make sure
lock_repositoriesis set totrue. This is highly recommended.You can exclude file attachments by passing
exclude_attachments: trueto the endpoint. {% data reusables.enterprise_migrations.exclude-file-attachments %} The final archive size must be less than 20 GB.
This request returns a unique
idwhich represents your migration. You'll need it for subsequent calls to the Migrations API.Send a
GETrequest to the migration status endpoint to fetch the status of a migration. You'll need:Your access token for authentication.
The unique
idof the migration:curl -H "Authorization: Bearer GITHUB_ACCESS_TOKEN" \ -H "Accept: application/vnd.github+json" \ https://api.github.com/orgs/ORG_NAME/migrations/ID
A migration can be in one of the following states:
pending, which means the migration hasn't started yet.exporting, which means the migration is in progress.exported, which means the migration finished successfully.failed, which means the migration failed.
After your migration has exported, download the migration archive by sending a
GETrequest to the migration download endpoint. You'll need:Your access token for authentication.
The unique
idof the migration: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
The migration archive is automatically deleted after seven days. If you would prefer to delete it sooner, you can send a
DELETErequest to the migration archive delete endpoint. You'll need:Your access token for authentication.
The unique
idof the migration: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
{% data reusables.enterprise_migrations.ready-to-import-migrations %}