I've noticed for the past couple of weeks that some of my fetches don't seem to actually update refs, but a follow-up fetch will. I finally managed to catch it in the act and track it down. It bisects to your 989b8c4452 (fetch-pack: put shallow info in output parameter, 2018-06-27). A reproduction recipe is below. I can't imagine why this repo in particular triggers it, but it was the one where I initially saw the problem (and doing a tiny reproduction does not seem to work). I'm guessing it has something to do with the refs, since the main change in the offending commit is that we recompute the refmap. -- >8 -- # clone the repo as it is today git clone https://github.com/cmcaine/tridactyl.git cd tridactyl # roll back the refs so that there is something to fetch for i in refs/heads/master refs/remotes/origin/master; do git update-ref $i $i^ done # and delete the now-unreferenced objects, pretending we are an earlier # clone that had not yet fetched rm -rf .git/logs git repack -ad # now fetch; this will get the objects but fail to update refs git fetch # and fetching again will actually update the refs git fetch -- 8< -- -Peff