Когда вы столкнетесь с этой проблемой, git rm
не будет достаточным, так как git помнит, что файл существовал один раз в нашей истории и, следовательно, будет ссылаться на него.
Чтобы все ухудшилось, перезагрузка тоже нелегкая, потому что любые ссылки на blob предотвратят сборщик мусора git от очистки пространства. Это включает в себя удаленные ссылки и ссылки reflog.
Я собрал git forget-blob
, маленький скрипт, который пытается удалить все эти ссылки, а затем использует git filter-branch для перезаписи каждой фиксации в ветке.
Как только ваш blob полностью не найден, git gc
избавится от него
. Использование довольно просто git forget-blob file-to-forget
. Вы можете получить дополнительную информацию здесь
Я собрал это вместе благодаря ответам из Stack Overflow и некоторым блогам. Кредиты к ним!