如何在git中恢复到旧版本

时间:2013-11-06 02:54:02

标签: git github

在github上,我们在提交57d7cb274622f86e586c2595317264f23626e6c5 我想恢复提交5798ee7c56efd7e898d3115da6efe3d5e7cddb6c,这是最新提交之前的几次提交。这就是我在做的事情:

$ git fetch origin
$ git reset --hard origin/master
Head is now at  57d7cb274
$ git status
nothing to commit (working directory clean)
$git revert 5798ee7c56efd7e898d3115da6efe3d5e7cddb6c
#On branch master
nothing to commit (working directory clean)
$ git status
#On branch master
nothing to commit (working directory clean)

但是生成的代码并没有真正提交到5798ee7c56efd7e898d3115da6efe3d5e7cddb6c 我错过了什么?

2 个答案:

答案 0 :(得分:2)

根据https://www.kernel.org/pub/software/scm/git/docs/git-revert.html的git文档,git revert创建了反转指定提交的提交。

因此,git status表示在运行git revert后没有提交的原因是你要查找的更改已经提交。

我认为你想要实现的目标已经完成,但是你的测试是否有效。

答案 1 :(得分:2)

您正在混淆git revertgit reset

使用git reset,你真的扔掉了所有这些提交,并且你得到了完全给定的提交。

但是git revert实际上添加另一个提交,它与原始提交完全相反,因此会恢复该提交。

使用git reset适用于您的本地存储库,但是一旦您推送了提交,其他人可能已经开始使用这些提交进行自己的工作。因此,在这种情况下,您需要显式的还原提交。

请注意,如果您想采用还原方式,则需要还原每个不需要的提交。