In Git GUI I can select parts of a diff and stage just those lines or chunks. How would I do the opposite, as in roll back changed lines in a file. Usually these are accidental white space changes I just want to revert out but still stage/commit other parts of the same file.
- git interactive add I believe or stackoverflow.com/questions/1085162/…Luke Hutton– Luke Hutton2012-05-31 01:19:51 +00:00Commented May 31, 2012 at 1:19
- That is the opposite. It stages the changes but then you have to revert the file.Kenoyer130– Kenoyer1302012-05-31 01:26:53 +00:00Commented May 31, 2012 at 1:26
- stackoverflow.com/questions/1981830/…Josh Lee– Josh Lee2012-05-31 03:05:59 +00:00Commented May 31, 2012 at 3:05
- The way the question is worded does not match the title of the question. Leif's answer actually answers the question in the title.mattgately– mattgately2014-11-07 15:20:07 +00:00Commented Nov 7, 2014 at 15:20
5 Answers
Stage the parts you want with git add -p, then discard (git checkout -- filename) the unstaged changes.
Update for Git 1.6.5+
In version 1.6.5, Git learned to checkout with a -p/--patch flag. You can discard chunks in one step with git checkout -p -- filename.
From the docs:
Interactively select hunks in the difference between the <tree-ish> (or the index, if unspecified) and the working tree. The chosen hunks are then applied in reverse to the working tree (and if a <tree-ish> was specified, the index).
This means that you can use git checkout -p to selectively discard edits from your current working tree.
1 Comment
git add -p HEAD~1 to interactively revert hunks from two commits back.I use git stash -p for this purpose. It has a side effect of creating a stash with the changes which were removed from the working tree, which is occasionally useful to quickly restore them.
1 Comment
--patch is a useful option.For Git Gui: First, click Rescan to scan for the modified file. Next, click the icon to the left of the filename to stage all modifications for commit. Then, right click on the debug line and chose Unstage Line From Commit.
The above information from: http://nathanj.github.com/gitguide/tour.html
1 Comment
Since Git 2.24, Git GUI features the "Revert Hunk" and "Revert Line" options in the context menu, similar to staging. You can even "Undo Last Revert" which is a great addition.
Here's the commit that added this functionality: https://github.com/git/git/commit/62bd99934bb2b1a07f786fdf9b94d7b692768e30