放弃单行更改

30

我注意到在Mac的Git客户端Tower中,用户甚至可以逐行放弃更改。我想知道如何使用命令行实现这一点?或者这是Tower的特殊功能吗?

我经常遇到以下情况:

@@ -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];
                        ...

我有一个 + 和一个 -,我想抛弃它,这样我的提交就会有最小的更改(因此冲突的可能性较小,审核也更容易)

:)


我可以理解不想让它们参与审核,但我仍然建议检查空格修正,这样您的代码库将得到改进。如果它们真的让你很烦,你的编辑器可能有一个设置来避免这种情况(比如“删除行末空格”)。 - Karl Bielefeldt
4个回答

35

真是不可思议,我从来没有使用过git checkout -p <my file>。感谢您向我介绍这个功能。 - WEBjuju
这是OP问题的正确答案。只想指出一些事情...如果你想撤销任何更改,这是一个很好的答案;然而,我会小心使用这个。这将撤消您本地文件中的更改(当然是在hunks内)。如果您打算取消暂存,但保留本地文件中的更改,请改用Robert Siemer的答案 - Sometowngeek

7
撤销 hunks 的方法如下:
git reset --patch

这是一个非常隐蔽的功能。您可以使用git add --interactive一次添加一个补丁,但是这种方式无法进行取消暂存git add还有一个选项--patch,类似于--interactive,但直接进入“补丁”菜单(否则您必须按pENTER)。git reset没有映射--interactive选项,但有--patch

2
您可以使用git add -e在提交之前编辑您的文件。

1

要交互式取消暂存文件,请使用:

git add -i

然后您将获得以下选项 -
*** Commands ***
  1: status       2: update       3: revert       4: add untracked
  5: patch        6: diff         7: quit         8: help

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

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接