2011-08-31 221 views
2

我的承诺已经推到Github上,让说Git的还原,然后提交,但要保留修改前恢复

A> B> C> d>电子 - HEAD

我要回复到B,所以我用

git reset --hard <B:Hash>

现在,它看起来像

A> B - HEAD

所以,如果我把它推到与git push --force服务器,我失去了C,d,E在仓库

我如何能恢复的文件并提交给像 A> B> C的最后修订> d > E>˚F

F =退耕:乙

我不能使用git commit,因为它说,有没有文件提交。

回答

4

试试这个:

git checkout B 
git reset --soft E 
git commit -m 'Reverted to B' 

checkout命令将改变工作树和索引,以匹配提交B.与--soft重置将提交当前分支点改变,在不影响工作树或索引。换句话说,在复位命令之后,索引将处于与B提交完全相同的状态。


你也可以使用git revert B..E,这将做同样的事情,但它会创建一个新的提交每个提交恢复。如果你想在一次提交中发生恢复,只需添加-n选项(git revert -n B..E),Git将把恢复应用到工作目录和索引。提交结果以完成回复。