如何从当前状态恢复为在某个提交时创建的快照?
如果我这样做git log
,那么我得到以下输出:
$ git log
commit a867b4af366350be2e7c21b8de9cc6504678a61b`
Author: Me <me@me.com>
Date: Thu Nov 4 18:59:41 2010 -0400
blah blah blah...
commit 25eee4caef46ae64aa08e8ab3f988bc917ee1ce4
Author: Me <me@me.com>
Date: Thu Nov 4 05:13:39 2010 -0400
more blah blah blah...
commit 0766c053c0ea2035e90f504928f8df3c9363b8bd
Author: Me <me@me.com>
Date: Thu Nov 4 00:55:06 2010 -0400
And yet more blah blah...
commit 0d1d7fc32e5a947fbd92ee598033d85bfc445a50
Author: Me <me@me.com>
Date: Wed Nov 3 23:56:08 2010 -0400
Yep, more blah blah.
Run Code Online (Sandbox Code Playgroud)
如何从11月3日恢复提交,即提交0d1d7fc
?
这与暂时将工作副本切换到特定的 Git 提交基本上是相同的问题,但适用于 Mercurial。
假设修订版 500 是我在 Mercurial 中提交的最后一个修订版。我又做了一些工作,并意识到早期版本中出了问题。所以,我已经“git stashed”,也就是说,hg shelve
d 我当前的更改,所以我处于干净的修订版 500。
现在我想做的是检查版本499,重建软件,看看是否仍然有错误;如果是,检查版本498,重建软件,看看是否仍然有错误;如果是,修订497,重建软件,看看是否还有错误;等等,直到我弄清楚哪个版本引入了错误。
完成此操作后,我想返回到修订版 500(unshelve
我之前的工作),添加修复,然后进行新的提交(这将是修订版 501)。这意味着当我回顾历史时,我不想重置任何东西,也不想从那里上演任何东西。
在 git 中,我可以git checkout HASH
回顾历史,一旦完成,git checkout master
就回到提示。我应该在 Mercurial 中使用哪些命令?