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?
As described here, simply use
git reflog expire --expire-unreachable=now --all
git gc --prune=now
git reflog expire --expire-unreachable=now --all
removes all references of unreachable commits in reflog
.
git gc --prune=now
removes the commits themselves.
Attention: Only using git gc --prune=now
will not work since those commits are still referenced in the reflog. Therefore, clearing the reflog is mandatory.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With