Hi,
I've stumbled upon a bug that the following command failed:
$ git clone <url> <dir> --reference <old-dir> --dissociate fatal: unable to parse commit <SHA> warning: Clone succeeded, but checkout failed. You can inspect what was checked out with 'git status' and retry with 'git restore --source=HEAD :/'
Omitting --dissociate fixed the error, but it wasn't clear to me what might be the root cause.
$ git --version git version 2.54.0
With the help of AI I was able to create a reproducer (see the attached script). I have verified that the reproducer works and also simplified it.
AI generated report (take it with a grain of salt): * The Bug: During dissociation, Git correctly repacks objects and removes the objects/info/alternates file. However, the git clone process has already initialized its object store including the alternate's commit-graph. After dissociation, it fails to "forget" or reload the object store, leading to a crash when it tries to use the commit-graph (which refers to the now-unlinked alternate) to perform the initial checkout. * Proof of state: As shown in the script output, a manual git checkout immediately after the failure succeeds, proving the repository is structurally sound but the clone process itself was in an inconsistent state. * Workaround: Passing -c core.commitGraph=false to the clone command prevents the crash.
regards, Daniel