由于合并而不允许git revert <hash>,但不是

我试图通过使用'revert'命令在git中恢复到某个'hash'数字。

我正在使用以下命令:

git revert c14609d74eec3ccebafc73fa875ec58445471765

但是,我收到以下内容:

错误:提交c14609d74eec3ccebafc73fa875ec58445471765是一个合并,但没有-m选项被给出。
致命:恢复失败

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

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


你正试图恢复合并提交,并且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让你移动到历史中的一个特定的提交,并将重写你的历史。


我想恢复到...

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

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

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

请注意,通常的预防措施是适用的:如果其他人已经提交了稍后的提交,将它们从历史记录中删除会使它们变得复杂。 如果你想创建一个新的提交,它只是将状态恢复到提交c14609d74eec3ccebafc73fa875ec58445471765的状态,你可以使用git rmgit checkout

git rm -r .
git checkout c14609d74eec3ccebafc73fa875ec58445471765 .

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

链接地址: http://www.djcxy.com/p/16983.html

上一篇: git revert <hash> not allowed due to a merge but no

下一篇: What are the practical consequences of rewriting GIT history?