как я могу удалить ненужные объекты из моего репо после filter-branch --subdirectory-filter - PullRequest
8 голосов
/ 02 апреля 2009

Я использую

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 Ответ

11 голосов
/ 02 апреля 2009

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...