我想将具有多个分支的Git存储库转换为Mercurial存储库。使用hg convert
只创建一个默认分支,然后为每个Git分支创建一个头。
我已经阅读How are git branches imported into mercurial with hg convert?并且我知道无法知道哪个提交属于Git中的哪个分支。但是,对于我来说,拥有尽可能多的分支的存储库对我来说不是一个可行的解决方案。
由于所有分支都不同,我显然不能将它们全部合并到一个单独的头部。
如何以这样一种方式转换或修改转换后的存储库?请注意,我不一定需要将所有现有提交分配给正确的分支,但我希望从此时开始的提交被分配到正确的分支,并且每个分支只有一个头。
答案 0 :(得分:2)
你必须才能了解一些关于Git的事情:
hg-git
而不是转换扩展将产生更正确的(双向)转换特别为您重复操作(优秀的共同点)VonC answer并链接您的问题并向您展示一些照片(Git'来自SmartGit,Mercurial来自TortoiseHG)
毕竟提交后,
GitRepo>git log --oneline
79ea101 third evolution in branch 2
720ac25 second evolution in branch 2
48951c3 first evolution in branch 2
6cf26b0 first content, to be evolved in three different branches
导入Mercurial之前,所有"分支"
从Mercurial的POV中,导入的结果非常不同:存储库有一个真实分支(名为branch default
)和3个匿名分支,标有 Mercurial书签 br1-br2-br3。
如果要在此存储库中使用Mercurial命名分支,则必须手动创建命名分支并重写历史记录:
作为可选项,您可以删除在步骤1中创建的最后一步空更改集(histedit
做得好)和所有无用的书签