Как я могу удалить ненужные объекты из моего репо после filter-branch --subdirectory-filter
Я использую
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 в своем исходном репо, и он, похоже, скопировал этот пакетный файл в новое репо. Похоже, я все еще могу делать то, что хочу.
1 ответ
Фильтр-ветвь также хранит резервные ссылки в.git/refs/original, которые вы также должны будете удалить перед сборкой