Git Diff - How do I revert selected lines or chunks

Kenoyer130 picture Kenoyer130 · May 31, 2012 · Viewed 27.5k times · Source

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.

Answer

ellotheth picture ellotheth · May 31, 2012

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.