Почему большие файлы все еще существуют в моем пакетном файле после их очистки с помощью ветки фильтра -?

Я переписал историю своего репозитория, удалив некоторые большие FLV-файлы с помощью git filter-branch. В первую очередь я следовал статье Github об удалении конфиденциальных данных и аналогичным инструкциям, найденным в других местах в Интернете :

. Удаление больших файлов FLV:

git filter-branch --index-filter 'git rm --cached --ignore-unmatch public/video/*.flv' --prune-empty -- --all

Удаление исходных ссылок:

rm -rf.git/refs/original/

Очистка журнала ссылок:

git reflog expire --expire=now --all

Удаление недоступных объектов:

git gc --prune=now

Агрессивное удаление недоступных объектов:

git gc --aggressive --prune=now

Переупаковка вещей:

git repack -A -d

И мой gitdir по-прежнему занимает 205 МБ и почти полностью содержится в одном пакетном файле :

$ du -h.git/objects/pack/*
284K   .git/objects/pack/pack-f72ed7cee1206aae9a7a3eaf75741a9137e5a2fe.idx
204M   .git/objects/pack/pack-f72ed7cee1206aae9a7a3eaf75741a9137e5a2fe.pack

. Используя этот скрипт , я вижу, что удаленные мной FLV-файлы все еще содержатся в пакете:

All sizes are in kB's. The pack column is the size of the object, compressed, inside the pack file.
size   pack   SHA                                       location
17503  17416  1be4132fa8d91e6ce5c45caaa2757b7ea87d87b0  public/video/XXX_FINAL.flv
17348  17261  b7aa83e187112a9cfaccae9206fc356798213c06  public/video/YYY_FINAL.flv
....

Клонирование репозитория через git clone --bare my-repoдает my-repo.git, который также имеет размер 205 МБ.

Что я могу сделать, чтобы удалить эти (предположительно )объекты, на которые нет ссылок, из пакета и уменьшить размер моего репозитория до размера, который был бы, если бы они никогда не были зафиксированы? Если они все еще как-то упоминаются, есть ли способ сказать, где?

Обновление

При попытке повторного -запуска git filter-branchя получил это уведомление:

Cannot create a new backup.
A previous backup already exists in refs/original/
Force overwriting the backup with -f

Я убедился, что нет ссылок в .git/refs/original, действительно,каталога вообще не было. Есть ли какой-то другой способ, которым git хранит ссылки, о котором я не знаю?

17
задан meagar 18 May 2012 в 17:39
поделиться