如何在filter-branch --subdirectory-filter之后从我的repo中删除不需要的对象

时间:2009-04-02 12:05:18

标签: git

我正在使用

git filter-branch --subdirectory-filter dir/name -- --all

建立一个只有该dir / name相关历史的回购。在我进行过滤之前,我将原始repo(非常大)复制到tmp目录中。在filter-branch之后,repo看起来就像我想要它,有一个例外:它似乎仍然包含原始repo中的所有对象,即使它们没有显示在“git log”中。

如何完全删除所有不需要的对象?

我尝试过这样的事情:

git reflog expire --expire=now --all
git gc --aggressive --prune=now

我很清楚,我不知道他们为什么还在那里或者删除它们意味着什么,但我确定愿意。与我有关的一些可能相关的信息是我在我的源代码库上做了一个git repack -a,它似乎将该packfile复制到新的repo。似乎我仍然可以做我想做的事。

1 个答案:

答案 0 :(得分:11)

filter-branch还会在.git / refs / original中保留备份引用,你也必须在gc'ing之前删除