开发者

Discard changes in one single line

I've noticed that in Tower (Git client for the Mac) the u开发者_开发知识库ser 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.

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


To undo hunks use

git reset --patch

It’s a very hidden feature. You can stage hunk by hunk with git add --interactive, but you can’t unstage this way. git add also features the option --patch which is like --interactive, but goes directly to the “patch” menu point (otherwise you have to hit pENTER).

git reset does not mirror the --interactive option, but has --patch.


You can use git add -e to edit your file right before staging it.


To interactively unstage a file use:

git add -i

then you will get following options -

*** Commands ***
  1: status       2: update       3: revert       4: add untracked
  5: patch        6: diff         7: quit         8: help

Use 3rd option revert to unstage files

Read more here - https://git-scm.com/book/en/v2/Git-Tools-Interactive-Staging

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜