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

git reflog delete HEAD@{1} HEAD@{2} caught me by surprise...

From
GSGeorge Spelvin <linux@horizon.com>
Date
Oct 13, 2012, 22:08 UTC
Message-ID
<20121013220855.24116.qmail@science.horizon.com>

Try the following commands in an empty directory: (I'm using the bash extention for {1..5}.)

git init
for i in {1..5}; do git commit -m "Commit $i" --allow-empty; done
git reflog
	bc93e06 HEAD@{0}: commit: Commit 5
	e14f92d HEAD@{1}: commit: Commit 4
	ac64d8e HEAD@{2}: commit: Commit 3
	287602b HEAD@{3}: commit: Commit 2
	183a378 HEAD@{4}: commit (initial): Commit 1
git reflog delete HEAD@{{1,2}}
git reflog
	bc93e06 HEAD@{0}: commit: Commit 5
	e14f92d HEAD@{1}: commit: Commit 3
	287602b HEAD@{2}: commit (initial): Commit 1
Er...I meant to delete Commit 3 from the reflog, not Commit 2.

In hindsight, it's obvious how this could happen, but it definitely took me by surprise when I was trying to delete the reference to a large and messy merge (that I didn't want and bloated my repository size) from the reflog.

If this is, in fact, Working As Designed, could I request a paragraph in the man page clarifying it? something like:

To delete single entries from the reflog, use the subcommand "delete" and specify the _exact_ entry (e.g. "`git reflog delete master@{2}`").

You may delete multiple reflog entries with one delete command, _however_ they are processed one at a time, so earlier deletes will cause renumbering that will affect later ones. To delete reflog entries @{2} and @{3}, the command would be either "`git reflog delete @{3} @{2}`", or "`git reflog delete @{2} @{2}`".

Next: Junio C Hamano
Message 1 of 3 in “git reflog delete HEAD@{1} HEAD@{2} caught me by surprise...”
  1. George SpelvinOct 13, 2012
  2. Junio C HamanoOct 14, 2012
  3. George SpelvinOct 14, 2012

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.