在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 我错过了什么?
答案 0 :(得分:2)
根据https://www.kernel.org/pub/software/scm/git/docs/git-revert.html的git文档,git revert创建了反转指定提交的提交。
因此,git status
表示在运行git revert后没有提交的原因是你要查找的更改已经提交。
我认为你想要实现的目标已经完成,但是你的测试是否有效。
答案 1 :(得分:2)
您正在混淆git revert
和git reset
。
使用git reset
,你真的扔掉了所有这些提交,并且你得到了完全给定的提交。
但是git revert
实际上添加另一个提交,它与原始提交完全相反,因此会恢复该提交。
使用git reset
适用于您的本地存储库,但是一旦您推送了提交,其他人可能已经开始使用这些提交进行自己的工作。因此,在这种情况下,您需要显式的还原提交。
请注意,如果您想采用还原方式,则需要还原每个不需要的提交。