Converting Mercurial folder to a Git repository Converting Mercurial folder to a Git repository git git

Converting Mercurial folder to a Git repository


On Linux or anything with bash/sh or similar, or python, try with fast export:

cdgit clone git://repo.or.cz/fast-export.gitgit init git_repocd git_repo~/fast-export/hg-fast-export.sh -r /path/to/old/mercurial_repogit checkout HEAD


Windows: TortoiseHG Hg-Git extension

Hg-Git can be used to convert a Mercurial repository to Git. You can use a local repository or a remote repository accessed via SSH, HTTP or HTTPS.

Example of local repositories conversion.

  1. Install Hg-Git.

    • On Windows, TortoiseHg comes with Hg-Git, though you need to enable it via the setting tool (in extensions section)

      TortoiseHg Settings

      or manually in ~/mercurial.ini

      [extensions]hggit =
  2. Use the following commands to convert the repository:

    $ mkdir git-repo; cd git-repo; git init; cd ..$ cd hg-repo$ hg bookmarks hg$ hg push ../git-repo

The hg bookmark is necessary to prevent problems as otherwise hg-git pushes to the currently checked out branch confusing Git. This will create a branch named hg in the Git repository. To get the changes in master use the following commands (only necessary in the first run, later just use git merge or rebase):

$ cd git-repo$ git checkout -b master hg


You can (from Mercurial side):

  • using Convert extension with --filemap option convert part of original repo into smaller with only needed files|directories
  • with hg-git extension push stripped repo to Git

or (instead of hg-git), using Mercurial bridge in Git, clone|pull repository from Git