2

我的提交已经推送到 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,因为它说没有要提交的文件。

4

1 回答 1

4

尝试这个:

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 就会将还原应用到工作目录和索引。提交结果以完成还原。

于 2011-08-31T09:01:57.450 回答