git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: question: what does "garbage" field in "git count-objects -v" represent? Is it broken?

From
Junio C Hamano <gitster@pobox.com>
Date
Aug 28, 2025, 17:05 UTC
Message-ID
<xmqqy0r3v0jz.fsf@gitster.g>
In-Reply-To
<CADR1ei4LFVoLhMyya+wx8dXBmrRNSNy6L5Ye_MJgL4kzgtVR_A@mail.gmail.com>
Daniele Sassoli <danielesassoli@gmail.com> writes:
Show 5 quoted lines
> When reading the output `git count-objects -v` there is a `garbage` field. At
> first I thought this would highlight objects that are considered "garbage", i.e.
> could be garbage collected. However, I kept noticing that this wasn't the case,
> despite my repository having plenty of dangling objects (that where removed once
> I run `git gc --prune=now`), garbage kept being 0.

count-objects is about quick housekeeping stats and does not (and should never) analyze reachability like fsck does, which is required to tell which objects are dangling.

Show 8 quoted lines
> I then turned to reading the docs, which state:
> garbage: the number of files in the object database that are neither
> valid loose objects nor valid packs
>
> I don't think I've ever seen a definition of an invalid object?
> I tried adding random chars to an object, effectively corrupting
> the repository(which `git fsck` correctly picked up), but
> count-objects kept returning 0 at the garbage field.

count-objects is about quick housekeeping stats and does not (and should never) analyze object contents like fsck does, which is required to tell which objects are corrupt.

Show 10 quoted lines
> The only way I've been able to get count-objects to report some garbage is by
> creating files in the packs directory (or in any of the sub-directories of
> `objects` folder) with random names, like "test", or sometimes I've seen it
> report the existence of lock files or even preserved files.
>
> So my question is, am I fundamentally misunderstanding what garbage means, are
> the docs simply unclear or is the functionality not working as expected?
>
> Thanks for taking the time to read this and respond.
> Dani

You are fundamentally understanding correctly. The command tells you it found a garbage when you do this:

    $ mkdir -p .git/objects/00 && >.git/objects/00/tmp-garbage
    $ git count-objects -v
    warning: garbage found: .git/objects/00/tmp-garbage
Previous: Elijah NewrenNext: Daniele Sassoli
Message 3 of 4 in “question: what does "garbage" field in "git count-objects -v" represent? Is it broken?”
  1. Daniele SassoliAug 28, 2025
  2. Elijah NewrenAug 28, 2025
  3. Junio C HamanoAug 28, 2025
  4. Daniele SassoliAug 28, 2025

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.