git filter-branch --index-filter "git rm -rf --cached --ignore-unmatch path_to_file" HEAD
$ git rm --cached giant_file
// Stage our giant file for removal, but leave it on disk
git filter-branch --index-filter "git rm -rf --cached --ignore-unmatch path_to_file" HEAD
git filter-branch --force --index-filter "git rm --cached --ignore-unmatch PATH-TO-YOUR-FILE-WITH-SENSITIVE-DATA" --prune-empty --tag-name-filter cat -- --all
git rm minimal.html
To replace all text listed in passwords.txt wherever it can be found in your repository's history, run:
bfg --delete-files YOUR-FILE-WITH-SENSITIVE-DATA
The BFG Repo-Cleaner is a faster, simpler alternative to git filter-branch for removing unwanted data. For example, to remove your file with sensitive data and leave your latest commit untouched), run:
bfg --replace-text passwords.txt
git filter-branch --force --index-filter "git rm --cached --ignore-unmatch PATH-TO-YOUR-FILE-WITH-SENSITIVE-DATA" --prune-empty --tag-name-filter cat -- --all