我的提交已经推送到 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
,因为它说没有要提交的文件。
我的提交已经推送到 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。Reset with--soft
将更改当前分支指向的提交,而不影响工作树或索引。换句话说,在reset命令之后,索引将处于与B提交完全相同的状态。
您也可以使用git revert B..E
,它会做同样的事情,除了它会为每个恢复的提交创建一个新的提交。如果您希望在一次提交中进行还原,只需添加-n
选项 ( git revert -n B..E
),Git 就会将还原应用到工作目录和索引。提交结果以完成还原。