git恢复到某些提交

git恢复到某些提交,git,commit,revert,Git,Commit,Revert,如何将本地副本上的所有文件恢复为某个提交 commit 4a155e5b3b4548f5f8139b5210b9bb477fa549de Author: John Doe <Doe.John.10@gmail.com> Date: Thu Jul 21 20:51:38 2011 -0500 提交4a155e5b3b4548f5f8139b5210b9bb477fa549de 作者:John Doe 日期:2011年7月21日星期四20:51:38-0500 这是我想恢复到的

如何将本地副本上的所有文件恢复为某个提交

commit 4a155e5b3b4548f5f8139b5210b9bb477fa549de
Author: John Doe <Doe.John.10@gmail.com>
Date:   Thu Jul 21 20:51:38 2011 -0500
提交4a155e5b3b4548f5f8139b5210b9bb477fa549de
作者:John Doe
日期:2011年7月21日星期四20:51:38-0500
这是我想恢复到的提交。任何帮助都是救命稻草

使用
git revert
将创建一个新的提交,该提交将还原您不想要的提交

您可以指定要还原的提交列表

另一种选择:


git reset
会将您的副本重置为您想要的提交。

git reset--hard 4a155e5
会将磁头移回您想要的位置。如果您不想让任何内容指向刚刚删除的历史记录,那么在此之前您可能需要删除其他引用。

您可以通过键入以下命令还原工作目录和索引下的所有文件

git reset --hard <SHAsum of your commit>


希望它有帮助

还原
不是正确的命令<代码>还原应用一个新的提交,该提交将撤消以前的提交。它不需要一个
--硬的
选项。@Charles:为什么不正确?它确实采用了--hard选项读取文档,撤销由单个提交引入的更改,它不会将索引和工作树重置为特定的提交,而这正是询问者所寻找的。这就是我们所做的<代码>重置
确实需要一个
--硬
选项。关于堆栈溢出的另一个错误答案。。。您无法提交这些更改。看,这是一个非常糟糕的方法。我刚刚失去了我最近的所有承诺!我一直在使用这种方法,但是为了能够安全地在另一台机器上提交,您需要做什么?(取而代之的是
git pull-f origin master
)@jww问题是“如何恢复到某个提交”这个答案怎么错了?在遵循建议后,您不能提交和推送。退出错误提交后,您无法处理的回购有什么好处?您假设用户有一个远程存储库,他们正在跟踪,并且他们已经将错误提交推送到该存储库。在本地“git reset--hard”之后,如果您尝试将最新更改提交到远程分支,您很可能会收到一个错误,指示“您的分支位于原点后面”。当这种情况发生时,您需要使用f标记'git push-f'@williampersell强制推送-为什么要删除您的答案?你的似乎是最明智的。在恢复之后,OP可以提交和推送(也就是说,他有一个有效的回购协议)。下面所有的答案都使回购协议处于一种没有任何用处的状态。比git reset更安全——硬的,后者更干净。
git reset --hard HEAD #your current head point
git reset --hard HEAD^ #your previous head point