在Git中还原文件中的单个更改

Ped*_*rdo 2 git

编辑:正如评论中指出的那样,这个操作实际上并不是"恢复".更合适的描述是"以交互方式选择(或索引,如果未指定)和工作树之间的区别."

如何在Git中恢复单个更改块?例如,在下面的例子中,从'git diff'只有一个文件,我想恢复第二个块(@@ -441,7 +442,7 @@),但不是第一个块(@@ -383, 7 +384,7 @@).这个例子就是一个例子.真实的情况是,如果我有大量的变化,而不仅仅是一行.这仅用于说明目的.

@@ -383,7 +384,7 @@
 (...)
-foo foo foo
-fooza fooza fooza 
+bar bar bar
+barza barza barza 
 (...)

@@ -441,7 +442,7 @@
 (...)
-rpc_address: localhost
+rpc_address: "127.0.0.2"
 (...)
Run Code Online (Sandbox Code Playgroud)

Liv*_*rcu 5

首先,如果文件被暂存,你不能做太多.如果是这种情况,请将其取消:

git reset HEAD <file>
Run Code Online (Sandbox Code Playgroud)

现在我们处于一个状态,我们可以选择性地恢复/ 暂存我们文件的补丁:

仅恢复一些块(这些块将永远丢失!):

git checkout -p <file>
Run Code Online (Sandbox Code Playgroud)

仅举办一些活动:

git add -p <file>
Run Code Online (Sandbox Code Playgroud)

在随后的删除/添加对话框中,最有用的选项是s(允许您进一步拆分块),y(是)或n(否).