如何删除git存储库中不需要的额外根提交?
我最近转换了一个subversion repo,它在那之前是从cvs转换而来的,最后我在树的底部得到了以下结构(为了清晰起见简化):如何删除git存储库中不需要的额外根提交?,git,Git,我最近转换了一个subversion repo,它在那之前是从cvs转换而来的,最后我在树的底部得到了以下结构(为了清晰起见简化): * master | ... | | * G |\ | * F | * E | * D | * C Initial commit. | | * A New repository initialized by cvs2svn. G-A中的行包含不需要的提交,我已使用“git filter branch”成功删除了这些提交。我希望能够完全删除该行,包括最初的 在A
* 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,但我不确定这是否可行。与G上的--父级筛选器一起使用:
$ git filter-branch --parent-filter \
'test $GIT_COMMIT = G && echo "-p F" || cat' HEAD
用实际SHA-1值替换G
和F
。谢谢。这是正确的。唯一的区别是我最终使用了“---all”而不是“HEAD”,因为实际上有多个分支以G为祖先。