丢弃一行中的更改

nac*_*o4d 24 git

我注意到在Tower(Mac的Git客户端)中,用户甚至可以逐行丢弃更改.我想知道如何使用命令行完成这项工作?或许是塔的特别之处?

在这种情况下,我经常发现自己:

@@ -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];
                        ...
Run Code Online (Sandbox Code Playgroud)

看看我有一个+和一个- ?我想丢弃它,所以我的提交有最小的变化(因此冲突的可能性更小,更容易审查)

:)

igo*_*orw 29

这称为交互式分段,可以使用git add -i或完成git add -p.有关更多信息,请参阅git-add联机帮助页,pro gitGit社区书.

编辑:

要以交互方式取消暂存文件,您可以使用:

git checkout -p HEAD
Run Code Online (Sandbox Code Playgroud)

另请参阅此SO问题:撤消git中未分级更改的部分内容


Rob*_*mer 6

要撤消帅哥使用

git reset --patch
Run Code Online (Sandbox Code Playgroud)

这是一个非常隐蔽的功能。你可以阶段用大块大块git add --interactive的,但你不能unstage这种方式。git add还具有--patch类似于的选项--interactive,但直接进入“补丁”菜单点(否则您必须点击pENTER)。

git reset不反映该--interactive选项,但具有--patch.