2010-01-01 39 views
4

我最近轉換一個顛覆回購,其已從CVS在樹的底部轉換之前,我已經結束了與以下結構(簡化爲清楚起見):如何在git存儲庫中刪除不需要的額外根提交?

* master 
| 
... 
| 
| 
* G 
|\ 
| * F 
| * E 
| * D 
| * C Initial commit. 
| 
| 
* A New repository initialized by cvs2svn. 

從GA線包含我用「git filter-branch」成功移除的不需要的提交。我希望能夠完全刪除該行,包括最初的 A處的空根提交,並且只有一行返回C.

因此,我想刪除A作爲G的父項並允許它被gc'd,但我不知道這是可能的。

回答

4

使用git filter-branch與G上一個--parent-filter

$ git filter-branch --parent-filter \ 
    'test $GIT_COMMIT = G && echo "-p F" || cat' HEAD 

,你實際SHA-1的值替換GF

+1

謝謝。這是現貨。唯一的區別是我最終使用「 - - all」而不是「HEAD」,因爲實際上有多個分支以G作爲祖先。 – 2010-01-01 21:58:05

+0

不客氣。我很高興它幫助! – 2010-01-01 22:55:32

相關問題