nacho4d nacho4d - 2 months ago 5x
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)



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.


To interactively unstage a file, you can use:

git checkout -p HEAD

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