由于合并而不允许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 revert
和git reset
之间的区别,并决定你想要哪一个。 git revert
是更安全的选择,但并没有真正做到你想要的。 它只是恢复(一组)提交的更改。 git reset
让你移动到历史中的一个特定的提交,并将重写你的历史。
我想恢复到...
那么你不希望git revert
,至少不是这样。 git revert
用于恢复在该提交中进行的特定更改。 你正在寻找的是恢复或撤消提交后所做的所有更改。
git reset
是在这里使用的命令。
git reset --hard c14609d74eec3ccebafc73fa875ec58445471765
将您的分支,索引和工作树完全重置为特定的提交。
请注意,通常的预防措施是适用的:如果其他人已经提交了稍后的提交,将它们从历史记录中删除会使它们变得复杂。 如果你想创建一个新的提交,它只是将状态恢复到提交c14609d74eec3ccebafc73fa875ec58445471765的状态,你可以使用git rm
和git checkout
:
git rm -r .
git checkout c14609d74eec3ccebafc73fa875ec58445471765 .
(需要使用rm
来确保新添加的文件也被删除。)然后,您可以在本地历史记录之上创建一个新的提交,这会解除自c14609d74eec3ccebafc73fa875ec58445471765以来的所有更改。
上一篇: git revert <hash> not allowed due to a merge but no
下一篇: What are the practical consequences of rewriting GIT history?