From: Jens Tröger Date: Mon, 25 May 2026 22:47:10 GMT Subject: Re: How does git track history overwrites? Message-ID: <074E783A-027D-4C5B-BC44-CC38C53735D7@light-speed.de> In-Reply-To: <87se7gasn8.fsf@gitster.g> Thank you Chris and Junio! > [Junio] 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? That line is the result of a `git log` after the `git fetch` I mentioned in my initial email. > [Chris] To really understand this properly, we need to understand > the root of a seeming contradiction: > > [...] Thank you for your elaborate explanation, Chris, that all makes a lot of sense. A few follow-up questions: • Is all the object information stored with a repo clone locally as well, or does some/most/all of it stay on the remote server repo? • How exactly does git connect the dots between commit dda8db1 and fda7769, how does it “know” the former was superseded by the latter (i.e. I fetch the former and Git uses the latter for head)? • Based on the previous question, can I manually find such a connection between two commit objects too? It sounds like reading some internals would be helpful. I’m noodling through https://git-scm.com/book/en/v2/Git-Internals-Git-Objects but perhaps you have some more recommendations? With many greetings, Jens