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

Dangerous "git am --abort" behavior

From
Linus Torvalds <torvalds@linux-foundation.org>
Date
Dec 20, 2010, 18:31 UTC
Message-ID
<AANLkTinP4SArMkjvTXOEG=tf=8EcEdP9fPAB7F=iitSc@mail.gmail.com>

I just noticed this, and I wonder if it has bitten me before without me noticing: "git am --abort" can be really dangerous.

What happened today was that I had been doing a pull or two, and then applied an emailed patch with "git am" as usual. But as sometimes happens, I actually had a previous "git am" that had failed - in fact, it was the same patch that I applied today that had had an earlier version that no longer applied.

So I just did "git am --abort" to get rid of the old stale 'am' state, but that actually also ended up aborting my "git pull". Oops.

Happily, I noticed, and did a "git reset --hard @{1}" to get things back, but at no point did "git am" warn about the implicit "reset" it did, that threw away non-am state.

I suspect I've avoided this in the past because my normal approach to getting rid of stale am state tends to be just the manual "rm -rf .git/rebase-apply", but it's also possible that I've simply not noticed before.

Maybe "git am" should actually save the last commit ID that it did, and only do the "reset" if the current HEAD matches the rebase-apply state and warns if it doesn't? Or maybe we could just introduce a new "git am --clean" that just flushes any old pending state (ie does that "clean_abort" thing, which is basically just the "rm -rf" I've done by hand). Or both?

Comments?
                     Linus
Next: Adam Monsen
Message 1 of 12 in “Dangerous "git am --abort" behavior”
  1. Linus TorvaldsDec 20, 2010
  2. Adam MonsenDec 20, 2010
  3. Drew NorthupDec 20, 2010
  4. Adam MonsenDec 20, 2010
  5. Steven E. HarrisDec 23, 2010
  6. Junio C HamanoDec 23, 2010
  7. Steven E. HarrisDec 24, 2010
  8. Junio C HamanoDec 21, 2010
  9. Junio C HamanoDec 21, 2010
  10. Linus TorvaldsDec 21, 2010
  11. Junio C HamanoDec 21, 2010
  12. Peter KreftingDec 22, 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.