你必须知道一些关于 Git 的事情:
- Git“分支”不是任何其他优秀VCS 的分支,对于 Mercurial,它们本质上是书签(“分支”仅标记头部变更集,任何较旧的变更集不包含此元数据)
- 当 Git 男孩谈论分支时 - 他在撒谎,因为分支只是他的 Git 世界中的分支
- Noboby(今天)将在转换存储库时将 Git-“分支”转换为分支
- 在大多数情况下(除了非常奇特的 Git-repos)
hg-git
,Convert Extension 会产生更正确的(双向)转换
特别为你我重复了你的问题链接中的(优秀的共同点)VonC 答案的操作,并会向你展示一些图片(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 命名分支,则必须手动创建命名分支并重写历史记录:
- 提交新的空变更集作为 0 的后代,它们将是分支的起点
- 将匿名分支重新设置为这些新父级(更改实际分支)
作为可选和最后一步,您可以删除在第 1 步创建的空变更集(histedit
做好)和所有无用的书签