Я использую
git filter-branch --subdirectory-filter dir/name -- --all
для создания репо, имеющего только историю, относящуюся к этому каталогу / имени. Перед тем, как сделать фильтр, я клонирую исходный репо (который намного больше) в каталог tmp. После ответвления фильтра репозиторий выглядит так, как я хочу, за одним исключением: кажется, что он все еще содержит все объекты из исходного репо, даже если они не отображаются в «git log».
Как я могу полностью удалить все эти ненужные объекты?
Я пробовал такие вещи, как:
git reflog expire --expire=now --all
git gc --aggressive --prune=now
Мне ясно, что я не знаю, почему они все еще там или что это значит, чтобы удалить их, но я бы, конечно, хотел. Немного связанной с этим информации, работающей против меня, состоит в том, что я недавно выполнил git repack -a в своем исходном репо, и он, похоже, скопировал этот пакетный файл в новое репо. Похоже, я все еще могу делать то, что хочу.