Import a Git repo

Azure Repos | TFS 2018 | TFS 2017 | TFS 2015 | TFS 2013

This guide shows you how to import an existing Git repo from GitHub, Bitbucket, GitLab, or other location into a new or empty existing repo in your project in Azure DevOps.


The Import repository feature is currently not working if you are importing a GitHub repo using TFS 2017.1 to TFS 2018.1. For more information about this issue, see Weak cryptographic standards removal notice and Unable to connect to GitHub due to TLS 1.2 only change

There are several workarounds to this issue:

  • You can import a GitHub repo into TFS using the steps in Manually import a repo.
  • You can set a machine-wide .NET registry key on your Application Tier servers to enable them to use all available TLS protocol versions. After setting these registry keys, you will need to recycle the TFS application pools (or restart the servers) for the settings to be activated. Open an elevated command prompt and run the following commands to set the registry keys.

     reg add HKLM\SOFTWARE\Microsoft\.NETFramework\v4.0.30319 /v SystemDefaultTlsVersions /t REG_DWORD /d 1 /f /reg:64
     reg add HKLM\SOFTWARE\Microsoft\.NETFramework\v4.0.30319 /v SystemDefaultTlsVersions /t REG_DWORD /d 1 /f /reg:32
  • On your Application Tier servers, you can modify the web.config file to change the targetFramework from <httpRuntime targetFramework="4.5" to <httpRuntime targetFramework="4.6".

This issue is resolved starting with Team Foundation Server 2018 Update 2 RC1 and higher.


  • An organization in Azure DevOps. If you don't have one, you can sign up for one for free. Each organization includes free, unlimited private Git repositories.
  • To use the Import repository feature in TFS, you must have TFS 2017 Update 1 or higher.
  • To import a repository using TFS 2017 RTM or earlier, see Manually import a repo.

Import into a new repo


Your web portal uses either the New navigation or Previous navigation user interface. Choose the New navigation tab if the New Navigation feature is enabled. You'll see a vertical sidebar along with other navigational features when New Navigation has been enabled for the signed-in user or the organization. Choose Previous navigation when you see a top-level, blue-bar—indicating that New navigation isn't enabled. For more information, see Web portal navigation.


Choose the New navigation tab for guidance. Azure DevOps Server 2019 supports the New Navigation user interface. For more information, see Web portal navigation.


Choose the Previous navigation tab for guidance. TFS 2018 and earlier versions only support the previous navigation user interface. For more information, see Web portal navigation.

  1. Select Repos, Files.

    View your branches

  2. From the repo drop-down, select Import repository.

    Manage repositories

  3. If the source repo is publicly available, just enter the clone URL of the source repository and a name for your new Git repository.

    If the source repository is private but can be accessed using basic authentication (username-password, personal access token, etc.), select Requires authorization and enter the your credentials.

    Import Repository Dialog

Import into an existing empty repo

On the Files page of the empty Git repository, select Import and enter the clone URL. You will need to provide credentials if the source repository requires authentication.

Import Repository into an existing repository


The import feature disables automated linking for work items mentioned in a commit comment since the work item IDs in the destination project might not be the same as ones in the source project. Automatic linking for work items mentioned in a commit can be re-enabled by navigating to Settings, Version Control, selecting your repository, and choosing Options. For more information on linking commits with work items, see How do I associate my commits with work items?

Manually import a repo

The import repo feature was introduced in TFS 2017 Update 1. If you are using TFS 2017 RTM or earlier, you can use the following steps to manually import a repo into TFS. You can also follow these steps to manually import a repo into an Azure DevOps Services repo by replacing TFS with Azure Repos in the following steps.

  1. Clone the source repo to a temporary folder on your computer using the bare option, as shown in the following command line example, and then navigate to the repo's folder. Note that when cloning using the bare option, the folder name includes the .git suffix. In this example, is the source repo to be manually imported.

    git clone --bare
    cd old-contoso-repo.git
  2. Create a target repo using TFS 2017 RTM, and make a note of the clone URL. In this example, is the URL for the new target repo.

  3. Run the following command to copy the source repo to the target repo.

    git push --mirror
  4. Delete the temporary folder by running the following commands.

    cd ..
    rm -rf old-contoso-repo.git

Frequently asked questions

Although most of the time the import is successful, the following conditions can cause problems.

What if my source repository is behind two-factor authentication?

The import service uses REST APIs to validate and trigger import and cannot work directly with repositories that require two-factor authentication. Most Git hosting providers like GitHub and Azure DevOps Services support personal tokens which can be supplied to the import service.

What if my source repository does not support multi_ack?

The import service uses the multi_ack capability of the Git protocol during the import. If the source repository does not provide this capability, the import service can fail to import from the given source. This failure can happen when creating import request or while import is in progress.

Can I import from previous versions of Team Foundation Server?

If the source Git repository is in a TFS version earlier than TFS 2017 RTM, then import will fail. This happens because of a contract mismatch between the latest Azure DevOps Services/TFS and pre-2017 RTM versions of TFS.

Can I use MSA based credentials?

Unfortunately, MSA (Microsoft Account, formerly Live ID) based credentials will not work. Import service relies on basic authentication to communicate with the source repository. If the username / password you are using are not basic auth then authentication will fail and import will fail. One way to check if the username / password you are using are basic auth or not is to try using Git to clone your repository using the below format

git clone https://<<username>>:<<password>>@<<remaining clone Url>>

Can I import from TFVC?

You can migrate code from an existing TFVC repository to a new Git repository within the same account. While migrating to Git has many benefits, it is an involved process for large TFVC repositories and teams. Centralized version control systems, like TFVC, behave different than Git in fundamental ways. The switch involves a lot more than learning new commands. It is a disruptive change that requires careful planning. For more information, see Import from TFVC to Git.

Next steps