I'm trying to do a historical find-and-replace on my code:
git grep -F foo > files git filter-branch --index-filter " cat `pwd`/files | xargs git checkout -- cat `pwd`/files | xargs sed -i 's/foo/bar/g; ' cat `pwd`/files | xargs git update-index -- " ancestor..HEAD
When I instead use --tree-filter and skip the checkout/update-index, it works how I want (but it takes a while...). But when I use --index- filter, the resulting history shows the "foo" to "bar" change happening *after* new code is added, rather than originally adding "bar".
How can I checkout just a few files and update them to take advantage of the speed of index operations?
Marcel