- Migrating from self-managed GitLab to GitLab.com
- Migrating between two self-managed GitLab instances
- From Bitbucket Cloud
- From Bitbucket Server (also known as Stash)
- From ClearCase
- From CVS
- From FogBugz
- From GitHub.com or GitHub Enterprise
- From GitLab.com
- From Gitea
- From Perforce
- From SVN
- From TFVC
- From repo by URL
- By uploading a manifest file (AOSP)
- From Gemnasium
- From Phabricator
- From Jira (issues only)
In addition to the specific migration documentation above, you can import any Git repository via HTTP from the New Project page. Be aware that if the repository is too large the import can timeout.
There is also the option of connecting your external repository to get CI/CD benefits.
If you only need to migrate Git repos, you can import each project by URL. Issues and merge requests can’t be imported.
If you want to retain all metadata like issues and merge requests, you can use the import/export feature to export projects from self-managed GitLab and import those projects into GitLab.com.
All GitLab user associations (such as comment author) will be changed to the user importing the project. For more information, please see the import notes.
If you need to migrate all data over, you can leverage our API to migrate from self-managed to GitLab.com. The order of assets to migrate from a self-managed instance to GitLab.com is the following:
Keep in mind the limitations of the import/export feature.
You will still need to migrate your Container Registry over a series of Docker pulls and pushes and re-run any CI pipelines to retrieve any build artifacts.
The best method for migrating from one GitLab instance to another, perhaps from an old server to a new server for example, is to back up the instance, then restore it on the new server.
In the event of merging two GitLab instances together (for example, both instances have existing data on them and one can’t be wiped), refer to the instructions in Migrating from self-managed GitLab to GitLab.com.
Additionally, you can migrate users using the Users API with an admin user.