如何将当前状态还原到某个提交的快照?
如果我执行git log
,则我会得到以下输出:
$ git log
commit a867b4af366350be2e7c21b8de9cc6504678a61b`
Author: Me <[email protected]>
Date: Thu Nov 4 18:59:41 2010 -0400
blah blah blah...
commit 25eee4caef46ae64aa08e8ab3f988bc917ee1ce4
Author: Me <[email protected]>
Date: Thu Nov 4 05:13:39 2010 -0400
more blah blah blah...
commit 0766c053c0ea2035e90f504928f8df3c9363b8bd
Author: Me <[email protected]>
Date: Thu Nov 4 00:55:06 2010 -0400
And yet more blah blah...
commit 0d1d7fc32e5a947fbd92ee598033d85bfc445a50
Author: Me <[email protected]>
Date: Wed Nov 3 23:56:08 2010 -0400
Yep, more blah blah.
如何恢复到11月3日的提交,即提交0d1d7fc
?
要还原到特定的提交,请使用以下命令:
git checkout commit_id
在这种情况下,您应该输入以下内容:
git checkout 0d1d7fc32e5a947fbd92ee598033d85bfc445a50
这将使您的工作目录还原为该提交的状态。请注意,此操作是可逆的,因此如果您在还原后发现有问题,可以随时使用git checkout
命令返回到之前的状态。
这取决于你所说的“还原”是什么意思。
临时切换到不同的提交
如果你想暂时回到之前的状态,玩耍一下,然后再回到原来的地方,你只需要检出所需的提交:
git checkout 0d1d7fc32
或者,如果你想在那个位置进行提交,可以在那个位置同时创建一个新的分支:
git checkout -b old-state 0d1d7fc32
要回到原来的地方,只需再次检出所在的分支。(如果你已经更改了分支,就像切换分支时一样,你需要相应地处理它们。你可以重置以丢弃它们;你可以使用储藏、检出、储藏弹出来携带它们;如果你想在那里有一个分支,你可以将它们提交到那里。)
硬删除未发布的提交
另一方面,如果你想真正摆脱自那时以来所做的一切,有两种可能性。一是,如果你没有发布这些提交中的任何一个,只需重置:
git reset --hard 0d1d7fc32
或者,如果有要保留的工作,可以执行以下操作:
git stash
git reset --hard 0d1d7fc32
git stash pop
这将保存修改,然后在重置后重新应用修补程序。
如果你搞砸了,你已经丢掉了本地的更改,但至少可以通过再次重置回到原来的位置。
用新提交撤销已发布的提交
另一方面,如果你已经发布了工作,你可能不想重置分支,因为这会有效地重写历史。在这种情况下,你可以确实撤销提交。使用Git,撤销具有非常特定的含义:创建一个提交,用相反的修补程序取消它。这样,你就不会重写任何历史。
git revert a867b4af 25eee4ca 0766c053
它还可以接受范围。这将撤销最后两个提交:
git revert HEAD~2..HEAD
同样,您可以使用提交哈希(不包括第一个哈希)撤销一系列提交:
git revert 0d1d7fc..a867b4a
撤销合并提交
git revert -m 1 <merge_commit_sha>
要获取其中一个,您可以在之后使用rebase -i
压缩它们,或者手动执行(请确保在存储库的顶层执行):
git checkout 0d1d7fc32 .
然后提交。一定要写一个好的消息描述你刚刚做了什么。
git commit
git-revert
手册页实际上在描述中涵盖了很多内容。另一个有用的链接是这个git-scm.com部分讨论git-revert。
如果你决定最终不想撤销,可以撤销撤销(如此处所述),或重置回撤销之前(请参阅上一部分)。
在这种情况下,你可能会发现这个答案也很有帮助:How can I move HEAD back to a previous location? (Detached head) & Undo commits
标签:git,仓库,revert,撤销,blah,Git,还原,提交,checkout From: https://www.cnblogs.com/xiaomandujia/p/17744451.html