Главная страница / Блог / Git / Как удалить большой файл из истории коммитов?

Как удалить большой файл из истории коммитов?

Иногда, в процессе работы в коммит может ошибочно попасть большой файл. Это значительно увеличивает вес коммита и сказывается на производительности системы. Для решения подобных проблем была создана команда filter-branch — она позволяет редактировать большое количество коммитов одной командой, например: удалять ненужные файлы из истории.

Для удаления файла из истории (всех коммитов от первого и до крайнего) необходимо выполнить команду:

git filter-branch --tree-filter 'rm -f file-name' HEAD

Опция —tree-filter запускает указанную команду (rm -f file-name) для каждого коммита в истории, после чего сохраняет результат выполнения. В этом случае команда filter-branch отредактирует каждый коммит, в котором «засветился» (от коммита в котором был создан и до крайнего, на который указывает .HEAD) искомый файл. Если вы знаете коммит, в котором был создан не желаемый файл, вы можете ускорить процесс, указав .Git промежуток истории нуждающийся в редактировании. Для этого необходимо заменить опцию HEAD на 35dsa2..HEAD, где 35dsa2 — коммит предшествующий тому, в котором был создан файл.

git filter-branch --tree-filter 'rm -f file-name' ..HEAD

Подробнее о команде можно почитать на этой страничке документации.

Важно!

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