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

Re: Is it possible to roll back unstaged changes while leaving the staged ones for the next commit?

From
Tim Visher <tim.visher@gmail.com>
Date
Dec 17, 2008, 22:48 UTC
Message-ID
<c115fd3c0812171448o3db6f4c1oc24e39f9a68ed1d3@mail.gmail.com>
In-Reply-To
<7vy6yelf2m.fsf@gitster.siamese.dyndns.org>
On Wed, Dec 17, 2008 at 3:30 PM, Junio C Hamano <gitster@pobox.com> wrote:
> The last part of the sentence after "because" does not parse for me at
> all...

Sorry for the double/triple/quadruple negatives I threw in there. Makes the statement incredibly unclear.

Show 11 quoted lines
> , but I think you are after one of the following:
>
>  (1) if you want to get rid of garbage changes in your work tree, you
>     would want "git checkout $that_path";
>
>  (2) if you want to temporarily stash away further changes in your work
>     tree, because you would want to first test what is staged, commit it,
>     and then later continue to refine the changes stashed away thusly,
>     you would want "git stash --keep-index".
>
>
If I could attempt to make my situation a little clearer.

I had two very similar files (I know, I know, DRY, blah blah. :\ It's not my source tree to begin with... bleh) and I wanted to duplicate a bunch of simple edits (adding white space, comments, etc.) from one of them to the other without having to manually compare them.

Then, a light bulb went off in my head and I thought to myself that it would make a ton of sense to use `git add -i` to add only the changes that I wanted to the files and leave the stuff I wanted to be different between the two of them out. I `cp`ed the edited file over the other file and then fired up `git add -i` and proceeded to stage all of the edits that I wanted. This left me with a staged version of the file that was exactly what I wanted and a locally modified file with contents that I didn't want. However, the changes were still untested.

What I wanted to do was basically get rid of the unstaged edits on this file but keep the staged ones. Without committing.

Unfortunately I couldn't figure out how to do this. The solution I came up with was to go ahead and `git commit` the staged changes and then `git checkout PATH` the just committed file to overwrite the local edits with the version of the file I wanted.

I want to know if it was possible to accomplish this without the commit stage.
-- 
In Christ,

Timmy V.

http://burningones.com/
http://five.sentenc.es/ - Spend less time on e-mail
Previous: Junio C HamanoNext: Junio C Hamano
Message 3 of 7 in “Is it possible to roll back unstaged changes while leaving the staged ones for the next commit?”
  1. Tim VisherDec 17, 2008
  2. Junio C HamanoDec 17, 2008
  3. Tim VisherDec 17, 2008
  4. Junio C HamanoDec 17, 2008
  5. Tim VisherDec 18, 2008
  6. Nanako ShiraishiDec 18, 2008
  7. Tim VisherDec 18, 2008

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.