Incremental 'git fetch' downloaded everything again
From: SZEDER Gábor <hidden>
Date: 2026-07-07 22:32:26
I usually try to fetch from https://github.com/git/git daily, and today morning something unusual happened: $ git fetch remote: Enumerating objects: 406099, done. remote: Counting objects: 100% (1229/1229), done. remote: Compressing objects: 100% (1044/1044), done. remote: Total 406093 (delta 207), reused 1189 (delta 185), pack-reused 404864 (from 2) Receiving objects: 100% (406093/406093), 292.22 MiB | 4.62 MiB/s, done. Resolving deltas: 100% (308943/308943), done. From https://github.com/git/git + ffe2b816f5...106a830b98 jch -> origin/jch (forced update) e9019fcafe..f85a7e6620 master -> origin/master + c42f45431d...00534a21ce next -> origin/next (forced update) + f6884212b2...73452939f9 seen -> origin/seen (forced update) Note that it downloaded over 400k objects in an almost 300MB packfile. Looking at the objects that I already had and the objects in the newly downloaded packfile: $ git rev-list --objects origin/master@{1} origin/next@{1} origin/jch@{1} origin/seen@{1} | cut -d' ' -f1 | sort >existing-objects $ git verify-pack -v .git/objects/pack/pack-080fedc9c19f711dd1b22103b382ede8925b90a6.idx | sed -n -E -e 's/^([0-9a-f]{40}) .*/\1/p' | sort >received-objects $ wc -l existing-objects received-objects 406954 existing-objects 406093 received-objects 813047 total $ git diff --no-index --stat existing-objects received-objects existing-objects => received-objects | 3615 +++++++++++++--------------------- 1 file changed, 1377 insertions(+), 2238 deletions(-) The vast majority of objects were already available locally. What's going on?! This might be a recurring issue: I remember a similar large download from 2 or 3 weeks ago, but back then I didn't have time to investigate or to report. I tried to reproduce this issue by attempting to recreate the state of my git repository from yesterday in a new repo, but no luck, 'git fetch' only downloads what's necessary. I use a Git version based on next, with a bunch of my own patches on top, but none of them has anything to do with object transfer and I've been using most of them for years. I don't have any config set under 'fetch.*' or 'transfer.*'.