В Git коммит попал файл большой >100 mb как удалить?

В Git каждый коммит содержит ссылки на все файлы, которые были изменены в этом коммите. Поэтому, если файл большой размером более 100 МБ попал в коммит, необходимо произвести ряд действий, чтобы удалить его из репозитория.

Вот шаги, которые следует выполнить:

1. Сначала необходимо убедиться, что файл не находится в индексе или в рабочей директории. Если файл находится в индексе и еще не был зафиксирован, мы можем его просто удалить без каких-либо особых действий. Для этого можно использовать команду:

git rm --cached <имя_файла>

Здесь <имя_файла> - это имя файла, который нужно удалить.

2. Если файл уже был зафиксирован, он будет находиться в истории коммитов. Отсутствуют непосредственные команды для удаления файла из истории коммитов Git, поскольку Git стремится к сохранению истории изменений.

3. Вместо удаления файла из истории мы можем создать новый коммит, который будет отменять содержимое предыдущего коммита. Для этого мы можем использовать команду git filter-branch. Команда git filter-branch позволяет применить фильтр к истории коммитов и внести изменения в каждый коммит.

Пример использования команды git filter-branch для удаления файла из коммитов:

git filter-branch --tree-filter 'rm -f <имя_файла>' HEAD

Здесь <имя_файла> - это имя файла, который нужно удалить.

4. После выполнения команды git filter-branch Git создаст новую историю коммитов без указанного файла. Однако, необходимо иметь в виду, что это изменение не является обратимым и может повлечь нарушение целостности репозитория и проблемы синхронизации с другими участниками проекта.

5. После выполнения команды git filter-branch необходимо произвести перезапись удаленных файлов исходной ветки на удаленный репозиторий:

git push origin --force --all

Здесь origin - это имя удаленного репозитория.

После выполнения этих шагов, файл большого размера будет удален из истории коммитов и удаленного репозитория. Однако, следует быть осторожными при изменении истории коммитов, поскольку это может привести к проблемам синхронизации и восстановлению данных.