Here’s a command that will remove an offending line from a file’s history in all your branches:
git filter-branch --tree-filter 'sed -i "/sensitive information/ d" filename' -- --all
This checks out every revision, runs the sed
command on it, then commits that revision back.
The sed
command in this case matches any lines containing the pattern sensitive information
in the file named filename
and deletes those lines.
Note: it’s good if you have a backup, and try the sed
script on its own first to make sure it’s doing what you want, because it can take quite a while to run on a long history.