6

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

Есть идеи?

1 ответ1

10

Читайте здесь про фильтр-ветку.

Кто-то случайно фиксирует огромный бинарный файл с бездумным добавлением 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 коммитов.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .