Подтвердить что ты не робот

Обрезать двоичные данные из хранилища git после факта

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

Как я могу это сделать? Мой предпочтительный метод мог бы каким-то образом ретроактивно применить правила .gitignore к старым коммитам... ответ, который использует этот метод, также будет в целом полезен для других, так как я уверен, что моя проблема не уникальна. Это также будет быстро применимо к общему решению без особых настроек для каждой уникальной структуры каталогов пользователей.

Возможно ли это, легкий способ, который я предлагаю выше, или каким-то более сложным способом?

4b9b3361

Ответ 2

Решение в этом ответе отлично работало для меня:

Вы также можете протестировать свой чистый процесс с помощью инструмента, такого как bfg repo чище, как в этом ответе:

java -jar bfg.jar --delete-files *.{jpg,png,mp4,m4v,ogv,webm} ${bare-repo-dir};

(Кроме того, BFG гарантирует, что он ничего не удалит в вашем последнем commit, поэтому вам нужно удалить эти файлы в текущем индексе и сделать "чистую" фиксацию. Все остальные предыдущие коммиты будут очищены БФГ)