Git Revert然后提交但希望在恢复之前保持修订

时间:2011-08-31 09:00:02

标签: git git-revert

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

1 个答案:

答案 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就会将恢复应用于工作目录和索引。提交结果以完成回归。