Remove an unreferenced commit from git repository

branch, commit, git, git-branch, git-rebase

Solution

Eventually it will be cleaned up by git, but you can look into git `gc` to actually force a garbage collect.

The `clean` command is different and won't take care of this for you.

Problem

I have a git commit history like this: ``` U / A---B---C---D---E master ``` Nothing points to the commit `U`, but I know its hash. How can I completely remove this commit from my repository as if it never existed? I'm the only person using this repo. I tried using `git rebase`, but that can either delete parts of a branch or move commits, but doesn't seem to be able to delete a single commit. If I do `git checkout <hash>` and then `git reset --hard HEAD~1` I don't see the the commit anymore. Is it actually gone completely or is it still hidden in the repo?

Original source

Related problems