2011-10-31 132 views
1

通過此Q & A:How do I remove the old history from a git repository?的建議,我將我的master分支的歷史記錄切分爲old_stuff分支。爲了節省點擊量,該過程涉及將最後一次提交master嫁接到根提交,實際上不給它父母,然後使用git filter-branch來使該更改永久。我現在的本地存儲庫應該是這樣,有一個簡短的master分支和一個悠久的歷史分支。通過過濾分支進行的Git推送更改

但是,如果我git clone存儲庫,那個不應該有父母的提交具有與以前相同的父代。當我做git push -f origin master時,我結束了一個master分支,新創建的提交在它的頭部,但是之前提交到master的父代。所以現在我有一個很長的old_stuff分支和一個master分支,只要再加一個提交。如果相關,則遙控器在Github上。

如何告訴遠程存儲庫和其他副本修改新提交的父級?

PS:我已閱讀關於如何在共享存儲庫中更改歷史記錄以打破其他人的副本的警告。我知道有關人員的姓名,並可以要求他們調整,所以我很樂意修改當前案例中的分支歷史。

回答

0

如何告訴遠程存儲庫和其他副本修改新提交的父級?

你......不能這樣做。如果你改變了一個提交的父對象,那麼你就改變了這個提交,並伴隨着所有與之相關的事情(新的sha1等)。根據指針所指向的方式,將「父母」視爲「孩子」可能會更有幫助。

這聽起來像你試圖讓你的歷史記錄下降到一個提交。如果是這種情況,那麼結賬(heh)git checkout --orphan。一旦你完成了這個任務,就需要指出你的主人(git reset --hard <new orphan branch>在主人身上)和強制推送到原點。

你的同胞所做的任何工作都需要在這位新主人的頂端重播; cherry-pick將在那裏幫助。

+0

謝謝,這符合我的情況,並且比嫁接和過濾方法少得多。 –