Rewrite history. Use git rebase to squash all commits between adding and removing the blobs. Its gross, and if your project is publically used you need to tell everyone what your doing and why.
codeberg
Codeberg is a community-driven, non-profit software development platform operated by Codeberg e.V. and centered around Codeberg.org, a Gitea-based software forge.
Rebase shrunk the .git folder from 280 MB to 267 MB... So in the end, I just deleted the repo AND my local .git folder, created a new repo and uploaded. Now it's 1,5 MB ๐ Thanks!
For the future, git is highly resilient so squashing the commits still leaves all the data in the reflog. After you do that operation a git gc would be needed to remove any unreferenced commits and shrink the git folder.
Thats just a very hardcore rebase :D

So git tracks the history of your commits and gives you the ability to restore your project to any exact commit. For text files that is efficiently accomplished by only tracking the delta between text on each commit. For binaries, git can only compare file hashes and if the file changes the whole file is uploaded again in full to your history. You probably changed a few 1mb images a bunch of times and now have every copy of it in your git history. Git LFS solves this problem. You can pull the problematic files out with a tool that rewrites history, but rewriting history is usually not great idea, there are too many footguns.