我的提交已经推送到了 Github,比如说
A > B > C > D > E -- 头部
我想恢复到 B ,所以我使用
git reset --hard <B:Hash>
现在,它看起来像
A > B——头部
所以,如果我使用 git push --force
将其推送到服务器,我在存储库中丢失了 C、D、E
如何恢复文件并提交为最后一个修订版,例如 A > B > C > D > E > F
F = 恢复:B
我无法使用git commit
因为它说没有要提交的文件。
最佳答案
试试这个:
git checkout B
git reset --soft E
git commit -m 'Reverted to B'
checkout 命令将更改工作树和索引以匹配提交 B。使用 --soft
重置将更改当前分支指向的提交,而不影响工作树或索引。换句话说,在reset命令之后,索引将处于与B提交完全相同的状态。
您还可以使用git revert B..E
,它会做同样的事情,只不过它会为每个还原的提交创建一个新的提交。如果您希望在一次提交中进行还原,只需添加 -n
选项 (git revert -n B..E
),Git 就会将还原应用到工作中目录和索引。提交结果以完成还原。
关于Git 恢复然后提交,但希望在恢复之前保留修订,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7254733/