Главная

Как удалить большой файл из истории Git на GitHub

24-03-2025

Если вы случайно закоммитили в GitHub большой файл (более 100 MB), то при попытке отправить изменения получите ошибку:

remote: error: File Архив.zip is 200 MB; this exceeds GitHub's file size limit of 100.00 MB

GitHub не позволяет загружать файлы больше 100 MB, поэтому нам нужно полностью удалить этот файл из истории репозитория. В этой статье мы рассмотрим несколько способов удаления файла из коммита и истории Git.

1. Удаление файла из всех коммитов

Чтобы удалить файл Архив.zip из истории репозитория, выполните команду:

git filter-branch --force --index-filter \
"git rm --cached --ignore-unmatch Архив.zip" \
--prune-empty --tag-name-filter cat -- --all

Замените Архив.zip на нужное имя файла.

2. Очистка кеша Git

После удаления файла необходимо очистить кеш и переписать историю:

rm -rf .git/refs/original/
git reflog expire --expire=now --all
git gc --prune=now --aggressive

3. Переписывание истории в удалённом репозитории

Теперь отправляем исправленный репозиторий обратно в GitHub:

git push origin --force --all

Если в репозитории есть теги, обновите их:

git push origin --force --tags

4. Добавление файла в .gitignore

Чтобы в будущем избежать повторного добавления больших файлов, добавьте их в .gitignore:

Архив.zip
*.zip

После этого очистите кеш Git:

git rm --cached Архив.zip
git commit -m "Удалён большой файл"
git push origin main

5. Удаление файла только из последнего коммита

Если файл попал только в последний коммит, можно просто отменить его:

git reset HEAD~1
git rm --cached Архив.zip
git commit -m "Удалён большой файл"
git push origin --force

Заключение

Теперь файл полностью удалён из репозитория, а GitHub больше не блокирует загрузку.

  • ✅ Удалили файл из истории Git
  • ✅ Очистили кеш и отправили исправленный репозиторий
  • ✅ Добавили файл в .gitignore, чтобы избежать повторных ошибок

Теги

Похожие статьи
  • 19-12-2020

    Вы успешно добавили ваш публичный ключ в настройки на GitHub и при выполнении команды git push у вас всё равно требуется ввод имени пользователя и пароля? Введите у себя в терминале команду:…