Subject: Re: How does git track history overwrites?

From: Junio C Hamano <[email-masked]>
Date: Mon, 25 May 2026 15:51:39 +0900

Jens Tröger <[email-masked]> writes:

> Hello,
>
> I’m looking for details and some clarification on a `git fetch` behavior I observed, but can’t quite explain. More context is in this Github comment:
>
>   https://github.com/jenstroeger/python-package-template/pull/1190#discussion_r3288253713
>
> but it boils down to this:
>
>   /tmp/bla > git -c protocol.version=2 fetch origin dda8db18cfc68df532abf33b185ecd12d5b7b326 --depth=1
>
> It seems that sha dda8db1 (tag 1.20.0 previously pointed at it) was replaced due to a suspected history overwrite with fda7769 (tag 1.20.0 now points at it) and git figures that out:
>
>   ...
>
>   From https://github.com/adamchainz/blacken-docs
>   * branch dda8db18cfc68df532abf33b185ecd12d5b7b326 -> FETCH_HEAD
>
> And then:
>
>   /tmp/bla > git checkout FETCH_HEAD
>   Note: switching to 'FETCH_HEAD’
>
>   ...
>
>   HEAD is now at fda7769 Version 1.20.0
>
> And:
>
>   /tmp/bla > cat .git/HEAD 
>   fda77690955e9b63c6687d8806bafd56a526e45f
>   /tmp/bla > cat .git/FETCH_HEAD 
>   dda8db18cfc68df532abf33b185ecd12d5b7b326 'dda8db18cfc68df532abf33b185ecd12d5b7b326' of https://github.com/adamchainz/blacken-docs
>
> I’d like to understand the details some more, and how I could manually make that connection?

Where does this line in your discussion page at GitHub (which is
omitted from the post to this list) come from?

    commit fda77690955e9b63c6687d8806bafd56a526e45f (grafted, HEAD)

Are you doing anything funky with .git/info/grafts by any chance?