使用“git revert”来退出添加一行的更改?

下面的pastebin是一个包含一行,二行,三行,四行和五行的文件的回购。

每行分别被提交到git

http://pastebin.ca/raw/2136179

然后我试图删除第二行用命令git revert <commmit which creates two>

并得到:

 error: could not revert b4e0a66... second hint: after resolving the conflicts, mark the corrected paths hint: with 'git add <paths>' or 'git rm <paths>' hint: and commit the result with 'git commit' 

这个简单的东西不应该有冲突吗? 还是我做错了/得到错误的命令?

合并细节似乎也没有意义:

 one <<<<<<< HEAD two three four five ======= >>>>>>> parent of b4e0a66... second 

是不是说删除一切而不是? 我期待只有两个受到影响…

git 1.7.10

Solutions Collecting From Web of "使用“git revert”来退出添加一行的更改?"

我试图重复你的步骤,发现同样的问题。 看来你只能恢复最近的提交。 在我的存储库中:

 $ git log --oneline 9a25594 five f8f1ec4 four 3c75345 three e6cd245 two 8349ccc one d2f16c4 for stkofl <<==== ignore this one $ git revert 9a25 --no-edit Finished one revert. [master 82bbc79] Revert "five" 1 files changed, 0 insertions(+), 1 deletions(-) $ git reset --hard HEAD is now at 82bbc79 Revert "five" 

恢复任何不是包含HEAD(最近的提交)的连续提交集合的提交似乎是不允许的。

当然,你可以这样做:

  $ git show e6cd |patch -R patching file file Hunk #1 succeeded at 1 with fuzz 1. 

然后提交结果。

更改保存为上下文差异…如果您查看third差异,则会注意到它是根据包含two的行应用的,这意味着它取决于引入two的提交。 同样,每个后续的提交都依赖于前一个提交,这就是为什么它要删除所有提交之后的引入two提交(因为它们都最终取决于提交)。 这就是为什么你不应该依赖在一般情况下能够恢复提交,而只能在提交之后立即提交。