【发布时间】:2012-12-24 01:42:17
【问题描述】:
我将 Bazaar 存储库导入 Git(使用 git bzr),但生成的存储库包含虚假的提交父链接:
请注意,标记为1.02-6 的提交基于1.02-3 提交,但1.02-1 也不必要地标记为父提交。 (注意:这部分 repo 中的所有提交都被标记;显示的提交之间没有提交。)
我尝试了几种方式(在master 分支上:git rebase 1.02-3、git rebase -i upstream-1.02、git rebase --onto 1.02-1 1.02-3、git rebase --root upstream-1.02 --onto=other_branch),但在每种情况下它都会因合并冲突而失败。这些似乎超出了必要的尝试;历史记录是正确的除了,在标记为1.02-6 的提交中记录了一个额外的父指针。
如何删除链接以线性化历史?有没有比手动按顺序挑选所有提交更好的方法?
【问题讨论】:
-
这真的是“假的”吗?或者是否对
1.02-1进行了错误修复,这些错误修复被合并到1.02-6但没有进入1.02-3(或通过不同的路径到达那里)?对bzr不太熟悉,我假设上图已简化为仅标记版本(即它们之间还有其他提交/变更集,目前未显示)。 -
@twalberg:没有简化。这些都是提交。
-
可能有用:git-scm.com/docs/git-commit-tree,
git cat-file -p 1.02-6
标签: git merge git-rebase