Git恢复不能在简单文件中工作

时间:2014-01-21 06:23:12

标签: git version-control

我有一个文本文件,然后4 commits添加了一些东西

reflog显示此

b8855f5 HEAD@{0}: commit: sample file 7, 8
76a0a1d HEAD@{1}: commit (amend): sample file 5, 6
c1e92ac HEAD@{2}: commit: sample file 35,6
a96273f HEAD@{3}: commit: sample file 3,4
c296a17 HEAD@{4}: commit: sample file added

我想要做的是还原提交a96273f

我试过这个并得到了这个

git revert -n a96273
error: could not revert a96273f... sample file  3,4
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'

2 个答案:

答案 0 :(得分:4)

git applygit merge一样,git revert有时需要您(用户)帮助解决冲突。

例如,假设在提交a96273中添加了limerick的第三行和第四行:

A mathematician named Klein
Thought the Moebius band was divine
  Said he, "If you glue
  The edges of two
You'll get a weird bottle like mine!"

然后,假设在后续提交中,您将“Moebius”的拼写更改为使用变音符号“Möbius”。

如果你然后尝试git revert a96273,git会看到更改是添加两条缩进的行 - 它可以找到,所以没有问题 - 但是第一条缩进行之前的行说“Moebius” 。现在的那条线不匹配。 Git无法确定删除两个缩进行是否正确,因此它会因冲突而停止,并要求您编辑文件,选择最终正确的表单,然后执行git addgit commit完成还原操作。

答案 1 :(得分:0)

我认为您要做的是将txt文件重置为a96273,因此您要查找的命令为git reset而不是git revert

尝试命令:git reset --hard a96273,此命令将丢弃a96273之后的所有更改,因此非常危险,请小心!

如果您只想回滚提交a96273并且不放弃更改,请使用git reset --soft a96273

您可以查看git-reset

的手册页