我的提交已经推送到Github,让我们说
A> B> C> D> E - HEAD
我想恢复到B,所以我使用
git reset --hard <B:Hash>
现在,它看起来像
A&gt; B - HEAD
所以,如果我用git push --force
将它推送到服务器,我在存储库中丢失了C,D,E
如何恢复文件并提交为最后一个修订版 A&gt; B> C> D> E> ˚F
F =还原:B
我无法使用git commit
,因为它说没有要提交的文件。
答案 0 :(得分:4)
试试这个:
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就会将恢复应用于工作目录和索引。提交结果以完成回归。