我有一個類似於下面的歷史記錄(但更復雜的幾個合併):衍合合並樹的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