我正在使用
git filter-branch --subdirectory-filter dir/name -- --all
建立一个仅具有与该目录/名称相关的历史的回购.在我进行过滤之前,我将原始repo(非常大)复制到tmp目录中.在filter-branch之后,repo看起来就像我想要的那样,有一个例外:它似乎仍然包含原始repo中的所有对象,即使它们没有显示在"git log"中.
如何完全删除所有不需要的对象?
我尝试过这样的事情:
git reflog expire --expire=now --all git gc --aggressive --prune=now
我很清楚,我不知道他们为什么还在那里或者删除它们意味着什么,但我肯定愿意.与我有关的一些可能相关的信息是我在我的源代码库上做了一个git repack -a,它似乎将该packfile复制到新的repo.好像我应该仍然能够做我想做的事情.
filter-branch还保留.git/refs/original中的备份引用,你必须在gc'ing之前删除它们