title: Importing an external Git repository using the command line
intro: >-
{% ifversion fpt %}If your Git repository is stored on a code hosting service
that is not accessible from the public internet, you can import the repository
using Git on the command line.{% else %}If your source code is tracked in a
Git repository, you can import the repository using Git on the command line.{%
endif %}
redirect_from:
- /articles/importing-a-git-repository-using-the-command-line
- >-
/github/importing-your-projects-to-github/importing-a-git-repository-using-the-command-line
- >-
/github/importing-your-projects-to-github/importing-source-code-to-github/importing-a-git-repository-using-the-command-line
- >-
/get-started/importing-your-projects-to-github/importing-source-code-to-github/importing-a-git-repository-using-the-command-line
- >-
/get-started/importing-your-projects-to-github/importing-source-code-to-github/importing-an-external-git-repository-using-the-command-line
versions:
fpt: '*'
ghes: '*'
ghec: '*'
shortTitle: External Git repo
Before you start, make sure you know:
- Your {% data variables.product.github %} username
- The clone URL for the external repository, such as
https://external-host.com/user/repo.gitorgit://external-host.com/user/repo.git(perhaps with auser@in front of theexternal-host.comdomain name)
For purposes of demonstration, we'll use:
- An external account named extuser
- An external Git host named
https://external-host.com- A {% data variables.product.github %} personal account named ghuser
- A repository on {% data variables.location.product_location %} named repo.git
Create a new repository on {% data variables.product.github %}. You'll import your external Git repository to this new repository.
On the command line, make a "bare" clone of the external repository using the external clone URL. This creates a full copy of the data, but without a working directory for editing files, and ensures a clean, fresh export of all the old data.
$ git clone --bare https://external-host.com/EXTUSER/REPO.git # Makes a bare clone of the external repository in a local directoryPush the locally cloned repository to {% data variables.product.github %} using the "mirror" option, which ensures that all references, such as branches and tags, are copied to the imported repository.
$ cd REPO.git $ git push --mirror https://{% data variables.product.product_url %}/USER/REPO.git # Pushes the mirror to the new repository on {% data variables.location.product_location %}Remove the temporary local repository.
cd .. rm -rf REPO.git
If the repository you are importing contains large files, you may run into a warning or error. For more information on large files and how to manage them, see AUTOTITLE.
{% ifversion fpt or ghec %}
Further reading
- AUTOTITLE {% endif %}