2010-01-14 73 views
5

我正在創建一個存儲庫,我在其中創建了一個作者採用髒路徑並將其所有依賴關係填充到初始提交中的lib /目錄中。通常情況下,如果不是最初的提交,我只是做一個交互式的重新分配並刪除整個提交(如果這是他所做的一切)。但是,我不知道如何編輯/刪除最初的提交。有沒有辦法可以編輯初始提交併移除lib目錄而不用觸及剩下的部分? Can I remove the initial commit from a Git repo?所選答案:如何編輯github存儲庫中的初始提交?

編輯

我無意中得到答案在這裏偶然發現。這就是我沒有更徹底搜索的結果。

回答

4
$ git filter-branch --parent-filter \ 
    'test $GIT_COMMIT = SECOND && echo "" || cat' \ 
    --tag-name-filter cat -- --all 

其中第二是SHA-1的你想成爲新的根提交。

上面假定所有分支使用相同的第一次和第二次提交。如果不是,則需要在父過濾器中概括測試。

請注意,這是一個非常激烈的措施:它會重寫您的整個歷史記錄並阻止您遵循作者的回購。此外,如果您已將回購推送到遙控器,則需要用git push -f來打破這些回購。

+0

警告:REF「裁判/頭/主」是不變的 警告:REF「裁判/遙控器/產地/主」是不變的 警告:REF「裁判/遙控器/產地/主」是不變的 是它給了我。 Ack! – Rayne 2010-01-14 17:21:56

+0

Ack!你想重寫* second * commit的父母,而不是第一個。查看最新的答案,併爲錯誤的開始抱歉。 – 2010-01-14 18:40:59

+0

在編輯這篇文章之前,我想出了一個不同的方式來完成它(顯示在我的編輯中)。我將假設這是真的有效(我完全相信你<3),並將你的答案標記爲接受。 – Rayne 2010-01-14 19:13:33

相關問題