由于合并但不允许使用git revert <hash>,但没有给出-m选项</hash>

时间:2014-06-19 07:48:23

标签: git github revert git-revert

我正试图恢复某个“哈希”# git中的数字,使用&#39; revert&#39;命令。

我使用以下命令:

git revert c14609d74eec3ccebafc73fa875ec58445471765

但是,我收到了以下内容:

  

错误:提交c14609d74eec3ccebafc73fa875ec58445471765是合并但未给出-m选项。
  致命的:恢复失败

作为一个新的git用户,请你能解释一下发生了什么吗?我必须做些什么来解决这个问题。

我想恢复我在运行c14609d74eec3ccebafc73fa875ec58445471765时看到的某个提交(git log)。

2 个答案:

答案 0 :(得分:26)

您正在尝试还原合并提交,并且git不知道要还原到哪个父级。 -m允许我们选择要选择的父级。请参阅合并提交并记下要转到的父级。父信息可以在git log中看到,例如:

  

提交d02ee0f2179def10277f30c71c5d6f59ded3c595

     

合并:dd3a24c 2462a52

并运行:

git revert <hash> -m 1

其中1表示父母编号为1。

如果您尝试将还原为提交,请执行以下操作:

git reset --hard <hash>

从文档中了解git revertgit reset之间的区别,并决定您想要哪一个。 git revert是更安全的选择,但并不能真正做到你想要的。它只是恢复(一组)提交的更改。 git reset会让您转到历史记录中的特定提交,并会重写您的历史记录。

答案 1 :(得分:2)

  

我想恢复到......

然后你不想要git revert,至少不是这样。 git revert用于恢复在该提交中进行的特定更改。您正在寻找的是恢复或撤消提交后所做的所有更改。

git reset是在这里使用的命令。

git reset --hard c14609d74eec3ccebafc73fa875ec58445471765将您的分支,索引和工作树完全重置为该特定提交。

请注意,通常的预防措施适用:如果其他人已经提交了以后的提交,那么将其从历史记录中移除会使这些问题变得复杂。如果您想要创建一个新的提交,只需将状态恢复为提交c14609d74eec3ccebafc73fa875ec58445471765,您可以使用git rmgit checkout

git rm -r .
git checkout c14609d74eec3ccebafc73fa875ec58445471765 .

(需要rm以确保新删除的文件也被删除。) 这使您可以在本地历史记录之上创建一个新提交,从而撤消自c14609d74eec3ccebafc73fa875ec58445471765以来的所有更改。