I've got a Git repository with plenty of commits that are under no particular branch, I can git show
them, but when I try to list branches that contain them, it reports back nothing.
I thought this is the dangling commits/tree issue (as a result of -D branch), so I pruned the repo, but I still see the same behavior after that:
$ git fetch origin
$ git fsck --unreachable
$ git fsck
No output, nothing dangling (right?). But the commit exists
$ git show 793db7f272ba4bbdd1e32f14410a52a412667042
commit 793db7f272ba4bbdd1e32f14410a52a412667042
Author: ...
and it is not reachable through any branch as
$ git branch --contains 793db7f272ba4bbdd1e32f14410a52a412667042
gives no output.
What exactly is the state of that commit? How can I list all commits in a similar state? How can I delete commits like those?
I had a similar issue. I ran
git branch --contains <commit>
, and it returned no output just like in the question.But even after running
my commit was still accessible using
git show <commit>
. This was because one of the commits in its detached/dangled "branch" was tagged. I removed the tag, ran the above commands again, and I was golden.git show <commit>
returnedfatal: bad object <commit>
- exactly what I needed. Hopefully this helps someone else that was as stuck as I was.