我正试图恢复某个“哈希”# git中的数字,使用' revert'命令。
我使用以下命令:
git revert c14609d74eec3ccebafc73fa875ec58445471765
但是,我收到了以下内容:
错误:提交c14609d74eec3ccebafc73fa875ec58445471765是合并但未给出-m选项。
致命的:恢复失败
作为一个新的git用户,请你能解释一下发生了什么吗?我必须做些什么来解决这个问题。
我想恢复我在运行c14609d74eec3ccebafc73fa875ec58445471765
时看到的某个提交(git log
)。
答案 0 :(得分:26)
您正在尝试还原合并提交,并且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
会让您转到历史记录中的特定提交,并会重写您的历史记录。
答案 1 :(得分:2)
我想恢复到......
然后你不想要git revert
,至少不是这样。 git revert
用于恢复在该提交中进行的特定更改。您正在寻找的是恢复或撤消提交后所做的所有更改。
git reset
是在这里使用的命令。
git reset --hard c14609d74eec3ccebafc73fa875ec58445471765
将您的分支,索引和工作树完全重置为该特定提交。
请注意,通常的预防措施适用:如果其他人已经提交了以后的提交,那么将其从历史记录中移除会使这些问题变得复杂。如果您想要创建一个新的提交,只需将状态恢复为提交c14609d74eec3ccebafc73fa875ec58445471765,您可以使用git rm
和git checkout
:
git rm -r .
git checkout c14609d74eec3ccebafc73fa875ec58445471765 .
(需要rm
以确保新删除的文件也被删除。)
这使您可以在本地历史记录之上创建一个新提交,从而撤消自c14609d74eec3ccebafc73fa875ec58445471765以来的所有更改。