我有一个类似于下面的历史记录(但更复杂的几个合并):衍合合并树的Git
F - G - H - K - L - …
/ /
/ I - J - M - …
/ /
A - B - C - D - E - …
A′- B′- C′- D′- E′
A和A'是具有不同的历史相同的树。
我要变基所有分支提交对主要分支相当于提交,(通过手动指定相当于提交都在重建基础树在哈希大概)保留合并。我如何告诉K′
它需要从H′
和J′
合并?或者我必须手动重新创建这些合并提交?
如果我做git rebase -p --onto B′ B L
它无法干净地应用。我可以将H
重新分配到B′
和M
到D′
,然后重新创建合并K
我自己,然后将L
重新分配到K′
(对于其他分支/合并等未显示),但这将是一个公平的工作。
我看过severalotherquestions但他们都没有合并。
您的回购是私密的,还是可以在GitHub上公开访问?如果它是公开的,人们可以直接看一看。 – 2014-02-19 19:50:37
如果这是一个私人回购,那么你应该可以用'git filter-branch --parent-filter ... --all'来完成这个工作,其中父过滤器的脚本标识为'B'并且声明它是新的父母应该是'A''而不是'A'。您可能会想要添加一个'--tag-name-filter cat'来保留您正在重写的部分中的任何标签。但如果是公共回购,这可能是不明智的。看起来你也可以使用'--commit-filter',但它更通用... – twalberg