Du könntest "git filter-branch" verwenden, um Daten aus der Commit History zu entfernen. Erstelle davor unbedingt ein Backup des gesamten Projekt!
git filter-branch --tree-filter "rm -f explicit_file.cpp" -- --all
--tree-filter führt den angegebenen Befehl auf dem Arbeitsverzeichnis jedes Commits aus. In diesem Fall wird der Befehl "rm -f explicit_file.cpp" ausgeführt, um die Datei aus dem Arbeitsverzeichnis jedes Commits zu entfernen.
Dabei werden alle Verweise auf die Datei "explicit_file.cpp" aus der Commit-History entfernt. Auch die Datei selbst, du musst sie also danach neu erstellen bzw. aktualisieren.
Wichtig ist, alle Beteiligten darüber zu informieren dass sie ihre lokalen Kopien nach dem erzwungenen Push aktualisieren.