Удалить большой файл из нескольких коммитов назад (в git)
Я сделал несколько локальных коммитов для своей кодовой базы и попытался перенести ее в репо, но там было довольно много больших файлов. Я просто сдался и продолжал работать, делая местные коммиты. Я удалил большие файлы сейчас и зафиксировал снова, но он все еще пытается выдвинуть оригинальные большие файлы. Я попытался добавить gitignore после того, как я зафиксировал их изначально, чтобы игнорировать любой файл размером более 50 МБ, но безрезультатно.
Есть идеи?
1 ответ
Читайте здесь про фильтр-ветку.
Кто-то случайно фиксирует огромный двоичный файл с бездумным добавлением git, и вы хотите удалить его везде. Возможно, вы случайно зафиксировали файл, содержащий пароль, и хотите сделать свой проект открытым исходным кодом. filter-branch - это инструмент, который вы, вероятно, хотите использовать для очистки всей своей истории. Чтобы удалить файл с именем passwords.txt из всей истории, вы можете использовать опцию --tree-filter для filter-branch:
$ git filter-branch --tree-filter 'rm -f passwords.txt' HEAD
Rewrite 6b9b3cf04e7c5686a9cb838c3f36a8cb6a0fc2bd (21/21)
Ref 'refs/heads/master' was rewritten
Вы также можете сделать интерактивную перебазирование в свою ветку в тот момент, когда вы зафиксировали эти файлы, и удалить их из этого коммита. Ссылка выше также объясняет это, но в основном:
git rebase -i HEAD~X
позволит вам редактировать последние X коммитов.