Listing and deleting Git commits that are under no branch (dangling?)
branch, git, git-dangling
Solution
No output, nothing dangling (right?)
Note that commits referred to from your reflog are considered reachable.
What exactly is the state of that commit? How can I list all commits with similar state
Pass `--no-reflogs` to convince `git fsck` to show them to you.
How can I delete commits like those?
Once your reflog entries are expired, those objects will then also be cleaned up by `git gc`.
Expiry is regulated by the `gc.pruneexpire`, `gc.reflogexpire`, and `gc.reflogexpireunreachable` settings. Cf. `git help config`.
The defaults are all quite reasonable.
Problem
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?