Удалить двоичные данные из репозитория git по факту - PullRequest
33 голосов
/ 30 декабря 2010

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

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

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

1 Ответ

12 голосов
/ 19 ноября 2013

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

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

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

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

...