git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: git-reflog bails if branch points to bad commit

From
Kevin Ballard <kevin@sb.org>
Date
Sep 23, 2010, 21:57 UTC
Message-ID
<6532E729-31B8-44D3-A26A-780DDD784703@sb.org>
In-Reply-To
<AANLkTimzQ5Jdw5oqiE17859YBiM0EQ6fnTp5+x6JR48k@mail.gmail.com>
On Sep 23, 2010, at 1:35 PM, Ævar Arnfjörð Bjarmason wrote:
Show 18 quoted lines
> On Thu, Sep 23, 2010 at 20:13, Kevin Ballard <kevin@sb.org> wrote:
> 
>> Attempting to use `git reflog show foo` or `git log -g foo` will
>> bail with "bad object: foo" if the tip commit of foo is
>> invalid. This seems incredibly non-useful. Why should reflog care if
>> foo points to a valid commit? This bug prevents reflog from being
>> used in a time of great need, which someone just ran into on the
>> #git IRC channel. Their power cut out and they ended up with a
>> corrupt commit on the tip of their branch, and they simply could not
>> view the reflog, which would have enabled them to roll the branch
>> back to a previous commit. Does anybody know why reflog has this
>> behavior?
> 
> As you say the repository is probably corrupted, and recovering from
> that may be hard, not much you can do with corrupted data.
> 
> Can this person provide a tar-ed copy of the repository so we can look
> at it and be of help, instead of speculating?
The person's problem was eventually resolved by finding another clone of the repository and using it to identify the bad object. However, I was able to trivially reproduce the reflog problem by making a very simple history, then modifying the ref itself to point to a bad hash (I merely incremented the hash by 1). At this point, attempting to say `git reflog show foo` was complaining "fatal: Bad object foo" even though the reflog itself is perfectly valid, and in fact the only problem in the entire repository is the ref currently points to a hash that doesn't exist in the object database.
-Kevin Ballard
Previous: Ævar Arnfjörð BjarmasonNext: Kevin Ballard
Message 3 of 4 in “git-reflog bails if branch points to bad commit”
  1. Kevin BallardSep 23, 2010
  2. Ævar Arnfjörð BjarmasonSep 23, 2010
  3. Kevin BallardSep 23, 2010
  4. Kevin BallardSep 23, 2010

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.