4

以下 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

这不是说除了一个之外删除所有内容吗?我原以为只有两个会受到影响...

混帐 1.7.10

4

2 回答 2

2

我试图重复你的步骤,发现同样的问题。您似乎只能还原最近的提交。在我的存储库中:

$ 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.

然后提交结果。

于 2012-04-15T13:45:17.897 回答
1

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

于 2012-04-15T05:42:07.603 回答