Comment by nomel
> The designers of git clearly disagreed
filter-branch has been around since, at least, 1.8. It exists to rewrite history, this specific use case (as the official documentation details) included. An open source project admitting that a solution is better than their own does not mean the developers "disagree" with it, especially when the functionality has already been part of the developers tool for over a decade.
But if they didn't disagree, they'd have designed a system that made removing things from remote history easy, rather than a complete pain in the ass that's basically impossible to make work usefully anyway. The whole thing runs largely based on commit hashes, and when you change history, all the commit hashes change, and... good luck. This behaviour has some useful properties but it's quite often not what you want. And that isn't how this sort of system inevitably has to work! - but git does anyway, and always has done.
(By comparison, if you want to delete something from the Perforce history, there is a command for that. You can remove individual revisions, leaving gaps in the history, or the whole thing.)