2017-01-23 39 views
0

我有一個回購協議,看起來像這樣:如何完全刪除大量的git提交?

A--B--C------F--G H--I--J--K---------O--P 
     \ /    \  /
     D--E     L--M--N 

我想消除提交A..G。我不在乎刪除特定的文件或文件夾,我不想恢復我的提交,我希望這些提交從歷史中消失。我嘗試了各種咒語filter-branchesrebase,但我似乎無法讓git做我想做的事。

+0

看起來像無關的歷史。你想刪除一個分支嗎? –

+0

這是不相關的歷史,與其自己的許多分支 – justinrstout

回答

0

您可以在交互式提交會話中進行交互式重新分配(rebase -i)和壁球(s),然後使用push -f重寫歷史記錄。

請注意,它將打破此存儲庫爲其他人誰有這個回購克隆。他們將不得不重新克隆,可能會失去正在進行的工作。所以這是一種反模式。

+0

我認爲'rebase -i',而不是南瓜,實際上刪除他想要的提交行。然而,所有提交的提交都會有新的提交散列,因此OP需要理解這裏的含義。 – jbu