丢弃一行中的更改

时间:2011-06-01 08:21:13

标签: 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];
                        ...

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

:)

5 个答案:

答案 0 :(得分:29)

这称为交互式暂存,可以使用git add -igit add -p完成。有关详细信息,请参阅git-add manpagepro gitGit Community Book

编辑:

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

git checkout -p HEAD

另见这个问题:Undo part of unstaged changes in git

答案 1 :(得分:2)

撤消帅哥使用

git reset --patch

这是一个非常隐藏的功能。您可以使用git add --interactive以隐藏阶段 hunk,但不能以这种方式取消暂停git add还提供--patch选项,类似--interactive,但直接转到“补丁”菜单点(否则您必须点击 p ENTER )。

git reset不会反映--interactive选项,但会--patch

答案 2 :(得分:1)

您可以在暂存之前使用git add -e编辑文件。

答案 3 :(得分:0)

您可以使用免费程序Source Tree丢弃帅哥或特定行。

答案 4 :(得分:0)

以交互方式取消暂存文件使用:

git add -i

然后您将获得以下选项 -

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

使用第3个选项revert取消暂存文件

在此处阅读更多内容 - https://git-scm.com/book/en/v2/Git-Tools-Interactive-Staging