Git's fsck
doc talks about "dangling" objects, while the gc
doc talks only about "loose objects". There's a strict split.
But while skimming a few related SO posts, the terms seem to be used interchangeably. In the Git Book v2 and Git's source code as well:
(main) $ git checkout v2.33.0
(225bc32) $ rg 'dangling (object|commit|blob|tag|tree)' | wc -l
31
(225bc32) $ rg 'loose (object|commit|blob|tag|tree)' | wc -l
117
Lastly, both commands are often used in sequence, and it seems clear to me from their behavior that they target the same things.
Thus, "dangling" and "loose" are just 2 similar terms for the same concept. Is this summary correct?
Or is "loose objects" rather a category, while "dangling" is reserved intentionally for the specific types of objects?
Loose object can be dangling, packs can contain dangling objects. So these concepts are orthogonal. But you can create a reference (branch, tag) which will reference a dangling commit and it will stop "dangle".