Migrate through a Git URL
- Tier: Free, Premium, Ultimate
- Offering: GitLab.com, GitLab Self-Managed, GitLab Dedicated
Import your existing repositories by using the Git URL. Imports performed this way do not include GitLab issues or merge requests.
Prerequisites
- Repository by URL import source enabled. If not enabled, ask your GitLab administrator to enable it. The Repository by URL import source is enabled by default on GitLab.com.
- The Maintainer or Owner role on the destination group to import to.
- If importing a private repository, an access token for authenticated access to the source repository might be required instead of a password.
Import a repository through the UI
To import a repository through the UI:
- In the upper-right corner, select Create new ( ) and New project/repository.
- Select Import project.
- Select Repository by URL.
- Enter a Git repository URL.
- Complete the remaining fields. A username and password (or access token) is required for imports from private repositories.
- Select Create project.
Your newly created project is displayed.
Import a repository through the API
You can use the Projects API to import a Git repository:
curl --location "https://gitlab.example.com/api/v4/projects/" \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer <your-token>' \
--data-raw '{
"description": "New project description",
"path": "new_project_path",
"import_url": "https://username:password@example.com/group/project.git"
}'Some providers do not allow a password and instead require an access token.
Import a timed-out repository
Imports of large repositories might time out after three hours. To import a timed-out repository:
Clone the repository:
git clone --mirror https://example.com/group/project.gitThe
--mirroroption ensures all branches, tags, and refs are copied.Add the new remote repository:
cd repository.git git remote add new-origin https://gitlab.com/group/project.gitPush everything to the new remote repository:
git push --mirror new-origin