GIT. Как полностью удалить файл из истории

Категория: GIT

Источники: Удаление объектов GITRemove sensitive data.

Опишу общую последовательность действий для полного удаления файлов из истории GIT.

Примечание

После удаления из истории GIT всех необходимых файлов и каталогов, сделайте клон проекта заново - так будет надежнее.

Порядок действий:

1. Нужно найти все коммиты, которые изменяли файл:

git log --pretty=oneline --branches -- BIGFILE.ZIP

2.1 Удалить ссылки на файл из всей истории коммитов, начиная с последнего (пусть, хеш последнего коммита - 6df7640):

git filter-branch --index-filter 'git rm --cached BIGFILE.ZIP --ignore-unmatch' --prune-empty --tag-name-filter cat -- --all

2.2 Удалить ссылки на каталог из истории коммитов:

git filter-branch --force --index-filter 'git rm -r --cached --ignore-unmatch BIG/DIR' --prune-empty --tag-name-filter cat -- --all

3. Отправляем изменения на сервер:

git push --force

Полезные команды

git count-objects -v   # посмотреть размер репозитория
rm -Rf .git/refs/original # удалить ссылки на старые из reflog
rm -Rf .git/logs/ # 
git gc # перепаковать базу
git reflog expire --expire=now --all # git gc --aggressive --prune=now #


категория: GIT