Файл GIT остается в истории даже после удаления - PullRequest
0 голосов
/ 29 ноября 2018

У меня есть большой файл в git, который позже был удален.file_123.xlsx

Я хочу удалить его из истории также из-за его размера, но не могу этого сделать.Я следовал инструкциям многих других, которые говорят следующее:

git filter-branch --index-filter "git rm -r -rf --cached --ignore-unmatched file_123.xlsx" HEAD

Который показывает удаление файла

rm 'file_123.xlsx'
rewrite xxxxx (168/168)
Ref 'refs/heads/master' was rewritten

Затем я выполняю эти шаги для сборки мусора

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

Однако, когда я захожу в папку с объектами, я все равно могу найти файл в пакете.Сначала я делаю это, чтобы перечислить большие идентификаторы BLOB-объектов

git verify-pack -v packxxx.idx | sort -k 3 -n | tail -3

123abc blob xxx xxx xxx
456abc blob xxx xxx xxx
789abc blob xxx xxx xxx

Затем я смотрю на последний в списке

git rev-list --objects --all | grep 789abc

Это показывает файл, который я пытался удалить:

789abcfile_123.xlsx

И мою папку gitне уменьшился в размере вообще.Я что-то упустил, или этот файл просто не удаляется?

1 Ответ

0 голосов
/ 29 ноября 2018

Ваша команда фильтра git filter-branch … HEAD, но ваша команда списка git rev-list … --all.То есть вы отфильтровали одну ветвь (master), но искали файл во всех ветвях.

Отфильтруйте и все остальные ветки:

git filter-branch --index-filter "git rm -r -rf --cached --ignore-unmatched file_123.xlsx" -- --all
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...