git 放弃单行中的更改

0x6upsns  于 2022-12-17  发布在  Git
关注(0)|答案(5)|浏览(116)

我注意到在Tower(Git客户端for the Mac)中,用户甚至可以逐行放弃更改。我想知道如何使用命令行来实现这一点?或者可能是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];
                        ...

看到我有一个+和一个-了吗?我想放弃它,这样我的提交就有了最少的修改(因此冲突的可能性更小,更容易审查)
:)

6ie5vjzr

6ie5vjzr1#

这称为交互式暂存,可以使用git add -igit add -p完成。有关详细信息,请参阅git-add manpagepro gitGit Community Book
编辑:
要以交互方式取消暂存文件,可以用途:

git checkout -p HEAD

另请参见此SO问题:Undo part of unstaged changes in git

uidvcgyl

uidvcgyl2#

要撤消块,请使用

git reset --patch

这是一个非常隐藏的特性。你可以用git add --interactive一个块一个块地“暂存”,但是你不能用这种方式“取消暂存”。git add还提供了--patch选项,它和--interactive一样,但是直接进入“补丁”菜单点(否则你必须按pENTER键)。
git reset不镜像--interactive选项,但具有--patch

9q78igpj

9q78igpj3#

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

yqkkidmi

yqkkidmi4#

您可以使用自由程序Source Tree丢弃块或特定行。

gzjq41n4

gzjq41n45#

要以交互方式取消暂存文件,请用途:

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

相关问题