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

Reverting an uncommitted revert

From
Joshua Jensen <jjensen@workspacewhiz.com>
Date
May 20, 2009, 02:34 UTC
Message-ID
<4A136C40.6020808@workspacewhiz.com>

I had an interesting experience the other day I'd like to share. It is a story of my stupidity plus a bug in the latest version of the Mac OS X 'git gui'.

I had spent several evenings working on a piece of source code. It was basically working, but I hadn't committed anything yet. Yes, I know I should have made a branch and performed incremental commits, but I didn't. This is why I was stupid.

Because of a busy week, it was many days before I could get back to what I was working on. By then, I had forgotten what I was doing, and so I pulled up the handy 'git gui' to show me my diffs.

'git gui' showed me a single whitespace change in the diff. The scroll bar extended from top to bottom in the diff window and wouldn't move. (This is the bug, which is easily reproducible.) I thought, "Gee, that's weird. I thought I'd made more changes." Not wanting the silly whitespace change, I chose Commit->Revert Changes from the menu.

A couple hours later, I was pulling my hair out trying to find the change that I knew, deep down, I had reverted.

I also knew there was no support for putting a reverted change in the reflog, but hey, the reflog has saved me before. I looked. It wasn't there.

So here's the idea: What if Git, upon a revert change (or git reset --hard HEAD), "committed" the changes to be reverted and then did the revert with a 'git reset --hard HEAD^'? The reverted files would be disconnected from a branch, but they would be available in the reflog to retrieve.

Or do I just not 'get it'?
Thanks!
Josh
Next: Nicolas Pitre
Message 1 of 28 in “Reverting an uncommitted revert”
  1. Joshua JensenMay 20, 2009
  2. Nicolas PitreMay 20, 2009
  3. Jeff KingMay 20, 2009
  4. Nicolas PitreMay 20, 2009
  5. Jeff KingMay 20, 2009
  6. Ping YinMay 20, 2009
  7. Wincent ColaiutaMay 20, 2009
  8. Jakub NarebskiMay 20, 2009
  9. Nicolas PitreMay 20, 2009
  10. Shawn O. PearceMay 20, 2009
  11. Eric RaibleMay 20, 2009
  12. Junio C HamanoMay 20, 2009
  13. Nicolas PitreMay 20, 2009
  14. Nicolas PitreMay 20, 2009
  15. Shawn O. PearceMay 20, 2009
  16. Junio C HamanoMay 21, 2009
  17. Jakub NarebskiMay 20, 2009
  18. Wincent ColaiutaMay 20, 2009
  19. Nicolas PitreMay 20, 2009
  20. Sverre RabbelierMay 20, 2009
  21. Jeff KingMay 20, 2009
  22. Nicolas PitreMay 20, 2009
  23. Sverre RabbelierMay 20, 2009
  24. Jeff KingMay 21, 2009
  25. Junio C HamanoMay 20, 2009
  26. write-tree --ignore-cache-treeJunio C Hamano, May 20, 2009
  27. 1/2 cache-tree.c::cache_tree_find(): simplify inernal APIJunio C Hamano, May 21, 2009
  28. 2/2 Optimize "diff-index --cached" using cache-treeJunio C Hamano, May 21, 2009

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.