Verzeichnisse aus der Git Historie löschen

Manchmal ist es notwendig, dass ein Verzeichnis oder eine spezielle Datei auf rückwirkend aus der GIT Commit Historie entfernt wird.
Die lässt sich erreichen durch:
git filter-branch --tree-filter "rm -rf node_modules" --prune-empty HEAD
git for-each-ref --format="%(refname)" refs/original/ | xargs -n 1 git update-ref -d
echo node_modules/ >> .gitignore
git add .gitignore
git commit -m 'Removing node_modules from git history'
git gc
git push origin main --force
Hier wird das „node_modules“ Verzeichnis als Beispiel genommen.
Gefunden hier