Головна сторінка / Блог / 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

Докладніше про команду можна почитати на цій сторінці документації.

Важливо!

При використанні команди слід пам'ятати, що ці дії переписують історію змін. Кожен коміт, де було знайдено файл, буде переписано, тому необхідно повідомити всіх, хто брав участь у роботі над проектом про необхідність переміщення їхніх правок на нові коміти.
Ukrainian
Перейдіть до верхньої частини