Іноді в процесі роботи в коміт може помилково потрапити великий файл. Це значно збільшує вагу комміту та позначається на продуктивності системи. Для вирішення подібних проблем було створено команду 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
Докладніше про команду можна почитати на цій сторінці документації.