tags:

views:

189

answers:

1

I'm using

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

to build a repo that only has history relating to that dir/name. Before I do the filter, I clone the original repo (which is very much bigger) into a tmp dir. After the filter-branch, the repo looks just how I want it, with one exception: It seems to still contain all the objects from the original repo even though they're not shown in "git log."

How can I remove all those unwanted objects completely?

I've tried things like:

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

It's clear to me that I don't know why they're still there or what it means to remove them, but I'd sure like to. A bit of possibly related information working against me is that I had done a git repack -a on my source repo a while back and it seems to copy that packfile over to the new repo. Seems like I should still be able to do what I want though.

+4  A: 

filter-branch also keeps backup refs in .git/refs/original, which you'll also have to remove before gc'ing

Pieter
If it's that simple I'm going to be kinda miffed. Do I literally just rm .git/refs/original ?
jettero
Well, rm-ing does indeed work (even if there's a better way) and this totally answers my question, thanks.
jettero