A large binary file was added to my git repository 20 commits ago. Removing this with:
git filter-branch --index-filter "git rm --cached --ignore-unmatch FILE" \
--prune-empty HEAD
changes the SHA1 for every commit (~1100) in my projects history. It does remove the file, but I was hoping to only have git push -f a small number of modified commits. Is there a way to tell filter-branch to only modify commits with FILE and descendant comments, in my case around 20 commits?
If you know what commit introduced the file, the simplest way is to specify
$SHA^..HEAD(where$SHAis the commit that introduced it). This will prevent it from even looking at older commits.If the commit that introduced this file only introduced it, and nothing more, and no other commits since then touched it, then you can get rid of it even simpler without a filter-branch, by using
git rebase --onto $SHA^ $SHA(where$SHAis the commit that introduced this file). That will simply drop the commit$SHAfrom history.