如何在git存储库中删除不需要的额外root提交?

时间:2010-01-01 17:14:04

标签: git

我最近转换了一个subversion repo,之前已经从cvs转换过来了,我最终得到了树底部的以下结构(为了清晰起见而简化):

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

来自G-A的行包含了我用“git filter-branch”成功删除的不需要的提交。我希望能够完全删除该行,包括初始行 A的空根提交,只有一行返回C。

所以我想删除A作为G的父级并允许它被gc'd,但我不确定这是否可能。

1 个答案:

答案 0 :(得分:4)

在G:

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

GF替换为实际的SHA-1值。