使用git log,我得到了一个到目前为止我所做的提交列表。
commit f5c5cac0033439c17ebf905d4391dc0705dbd5f1
Author: prosseek
Date: Fri Sep 3 14:36:59 2010 -0500
Added and modified the files.
commit c14809fafb08b9e96ff2879999ba8c807d10fb07
Author: prosseek
Date: Tue Aug 31 08:59:32 2010 -0500
Just simple test for core.editor.
... etc ...
如何将其恢复到特定的提交?例如,如果我想返回提交c14809fafb08b9e96ff2879999ba8c807d10fb07,我应该怎么做?
是否有其他/更好的方法可以使用Git返回特定的提交?例如,我是否可以为每个commit添加一些标签以使其与标签一起返回?
您是希望将回购回滚到该状态,还是希望本地回购看起来像这样?
如果你硬重置,它会让你的本地代码和本地历史记录和提交时一样。但如果你想把这个推给另一个有新历史的人,它会失败:
git reset --hard c14809fa
如果你重置-软,它会移动你的头到他们的地方,但留下你的本地文件等相同:
git reset --soft c14809fa
那么这次重置你到底想做什么?
编辑-
你可以给你的回购加上“标签”。然后回到标签。但是标签实际上只是sha1的快捷方式。
你可以把它标记为TAG1..然后git reset -soft c14809fa, git reset -soft TAG1,或git reset -soft c14809fafb08b9e96ff2879999ba8c807d10fb07都会做同样的事情。
我认为,bwawok的答案在某种程度上是错误的:
如果有的话
Git重置-软c14809fa
它将使您的本地文件更改为当时的样子,但保留您的历史记录等相同。
根据手册:git-reset,“git reset -soft”…
根本不涉及索引文件和工作树(但将头部重置为<commit>,就像所有模式一样)。这将使所有更改过的文件都变成“要提交的更改”,就像git状态所显示的那样。
因此它将从分支中“移除”更新的提交。这意味着,在查看了旧代码之后,您无法再次轻松地转到该分支中的最新提交。所以它做了bwawok所描述的相反的事情:本地文件没有被改变(它们看起来和“git reset——soft”之前完全一样),但是历史被修改(分支在指定的提交之后被截断)。
bwawok回答的命令可能是:
git checkout <commit>
您可以使用它来查看旧版本:我的代码昨天看起来怎么样?
(我知道,我应该把这个放在这个答案的评论中,但stackoverflow不允许我这样做!我的名声太低了。