在Git

时间:2017-06-25 14:45:19

标签: 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"
 (...)

1 个答案:

答案 0 :(得分:5)

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

git reset HEAD <file>

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

仅还原一些块(这些块将永远丢失!):

git checkout -p <file>

仅举办一些活动:

git add -p <file>

在随后的删除/添加对话框中,最有用的选项是s(允许您进一步拆分一个块),y(是)或{ {1}}(不)。