Как удалить ненужные объекты из моего репо после фильтрации-ветки --subdirectory-filter

Я использую

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

чтобы создать репо, имеющее только историю, относящуюся к этому dir/name. Прежде чем я сделаю фильтр, я клонирую оригинальное репо (которое намного больше) в директорию tmp. После ветвления фильтра репо выглядит так, как я этого хочу, за одним исключением: он все еще содержит все объекты из исходного репо, хотя они не показаны в "git log."

Как я могу полностью удалить все эти нежелательные объекты?

Я пробовал такие вещи, как:

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

Мне ясно, что я не знаю, почему они все еще существуют или что значит их удалить, но я бы точно хотел. Немного возможно связанная с этим информация, которая работает против меня, заключается в том, что я сделал репарацию git -a на моем исходном репо некоторое время назад и, похоже, скопировал этот пакетный файл в новое репо. Похоже, я все равно могу делать то, что хочу.

Ответ 1

filter-branch также сохраняет резервные копии в .git/refs/original, которые вам также нужно удалить перед gc'ing