将 hg 分支转换为 git 分支?

srk*_*ing 5 git mercurial version-control-migration

我必须将分支 Mercurial 存储库转换为 git 存储库,并继续将更改从 Mercurial 拉到 git(仅限单向)一段时间。现有的 hg-to-git 答案似乎无法正确处理分支。例如,具有“default”和“br1”分支的小型 hg 存储库会产生以下结果:

$ hg branches
br1                            3:a8914879f6bb
default                        2:4e6221bce113

cd ..
git-hg clone file:/path/to/hgrepo gitrepo

...<snip>
From .git/hgremote
 * [new branch]      br1        -> hg/br1
 * [new branch]      master     -> hg/master
From .git/hgremote
 * branch            master     -> FETCH_HEAD

cd gitrepo
git branch --list
* master
Run Code Online (Sandbox Code Playgroud)

Git 认为只有一个分支“master”。 如何使我的 Mercurial 分支显示为同名的 git 分支? 我可以使用“master”而不是“default”,但我必须在 git 中拥有所有其他命名分支。

pok*_*oke 3

这些分支作为远程分支导入,这意味着它们相对于远程存储库,而远程存储库恰好是 hg 存储库。如果您输入,git branch -a您将能够看到所有分支。

您可以像这样创建这些远程分支的本地分支:

git branch <localname> <remotename>
Run Code Online (Sandbox Code Playgroud)

例如:

git branch br1 hg/br1
Run Code Online (Sandbox Code Playgroud)