git revert back to certain commit
如何将本地副本上的所有文件还原回特定的提交?
1 2 3
| commit 4a155e5b3b4548f5f8139b5210b9bb477fa549de
Author: John Doe < [email protected]>
Date: Thu Jul 21 20:51:38 2011 -0500 |
这是我想要恢复的承诺。任何帮助都是救命稻草!
- @威廉姆普尔-你为什么删除你的答案?你的似乎是最明智的。在恢复之后,OP可以提交和推送(也就是说,他有一个有效的回购)。下面的所有答案都将回购置于一种没有任何有用之处的状态。
git reset --hard 4a155e5要移动头部回到你想要的。有可能是其他人在这段时间,你将需要删除,如果你不想任何事情,你只是个历史点删除。
- 我一直在使用这种方法,但是为了安全地在另一台机器上提交,您需要做什么?(而不是git pull -f origin master)
- @克里斯托夫德托耶,我不明白你的问题。
- 所以这实际上改变了历史?如果是这样的话,我需要把它添加到我的git rebase和git commit --amend列表中。
- @还有——这并没有改变历史,只是抹去了一些历史。就像回到过去。你不会改变任何东西,你只需重置你所处的时间点。
- 再多想一想,它就会属于"改变历史"的范畴,特别是如果你在后面强行推动遥控器的话。
- 另一个错误的答案是堆栈溢出…您不能提交这些更改。请参见返回到存储库中的特定修订版后提交和推送更改?
- @JWW的问题是"你如何恢复到某个特定的承诺"这个答案是如何错误的?
- 你不能在听从建议后承诺和督促。在不良承诺被取消后,回购协议有什么好处是你不能做任何事情的?
- 您假设用户有一个他们正在跟踪的远程存储库,并且他们已经将错误的提交推送到该存储库。
- 向下投票,因为op明确地说"还原到",并且revert在git中有特定的含义;重置可以在推送时中断历史,而还原则不会。
你可以恢复你的工作目录下所有的文件和命令由以下指标表征本
1
| git reset --hard <SHAsum of your commit> |
所以你能型
1
| git reset --hard HEAD #your current head point |
或
1
| git reset --hard HEAD^ #your previous head point |
希望它帮助
- revert命令不正确。revert应用了一个新的提交,它撤消了以前的提交。它不采用--hard选项。
- @查尔斯:为什么不正确?它确实采取了——硬的选择
- 阅读文档,revert撤消由单个提交引入的更改,它不会将索引和工作树重置为ASKER正在寻找的特定提交。这就是reset所做的。reset确实有一个--hard选项。
- 哎呀…是的,一个打字错误。
- 还有一个关于堆栈溢出的错误答案…您不能提交这些更改。请参见返回到存储库中的特定修订版后提交和推送更改?
- 这是一个非常糟糕的方法。我刚刚失去了最近所有的承诺!
www.kernel.org http:/ / / / /酒吧/软件/文件/ git-revert.html Git单片机
使用git revert 想创建新的提交,你dont想恢复这一点。
替代:http://复位git-scm.com /文档/ git
要重置您的git reset提交拷贝到你想要的。