nacho4d nacho4d - 3 months ago 7
Git Question

Discard changes in one single line

I've noticed that in Tower (Git client for the Mac) the user can discard changes even line by line. I wonder how could this be done using the command line? or maybe is something special of Tower?

I frequently find myself in this case:

@@ -391,7 +392,7 @@ extern BOOL validateReceiptAtPath(NSString *path);

NSURL *url = [self fileURL];
if (url != nil) {
NSRect readFrame = [self _readPreferenceOfFileAtURL:url];
-
+
for (NSScreen * screen in [NSScreen screens]) {
NSRect screenVisibleRect = [screen visibleFrame];
...


See how I have one
+
and one
-
? I would like to discard it so my commit has the minimum changes (hence less possibilities of conflicts and easier review)

:)

Answer

This is called interactive staging and can be done using git add -i or git add -p. See the git-add manpage, pro git and the Git Community Book for more information.

EDIT:

To interactively unstage a file, you can use:

git checkout -p HEAD

Also see this SO question: Undo part of unstaged changes in git.