Инструмент, который вы хотите, - git filter-branch
. Его использование описано здесь здесь , но в основном:
$ git filter-branch --tree-filter 'rm -f my_file' HEAD
удалит «my_file» из каждый commit.
Notice что это переписывает каждую фиксацию, поэтому, если вы входите в удаленный репозиторий, вам необходимо (a) принудительно обновить, и (б) все остальные, кто вытащил вас, теперь будут иметь дубликаты (поскольку вы переписали историю), как описано на странице git rebase
man .