有了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 ...
Run Code Online (Sandbox Code Playgroud)
如何将其还原为特定提交?例如,如果我想回去,我该怎么办commit c14809fafb08b9e96ff2879999ba8c807d10fb07
?
有没有其他/更好的方法回到Git的特定提交?例如,我可以将每个提交的一些标签放回标签中吗?
bwa*_*wok 484
你想将你的回购回滚到那个州吗?或者你只是想让你的本地回购看起来像那样?
如果你这样做
git reset --hard c14809fa
Run Code Online (Sandbox Code Playgroud)
它将使您的本地代码和本地历史记录与该提交时一样.但是如果你想把它推给拥有新历史的其他人,它就会失败.
如果你这样做
git reset --soft c14809fa
Run Code Online (Sandbox Code Playgroud)
它会使您的本地文件更改为当时的文件,但保留您的历史记录等.
那么你想用这个重置做什么呢?
编辑 -
您可以在您的仓库中添加"标签"..然后返回标签.但标签实际上只是sha1的快捷方式.
您可以标记该为TAG1 ..然后git reset --soft c14809fa
,git reset --soft TAG1
或git reset --soft c14809fafb08b9e96ff2879999ba8c807d10fb07
将所有做同样的事情.
Pet*_*r A 163
我想,bwawok的答案在某些方面是错误的:
如果你这样做
Run Code Online (Sandbox Code Playgroud)git reset --soft c14809fa
它会使您的本地文件更改为当时的文件,但保留您的历史记录等.
根据手册:git-reset,"git reset --soft"......
根本没有触及索引文件和工作树(但是将头重置为<commit>,就像所有模式一样).这将保留所有已更改的文件"要提交的更改",因为git status会将其设置为.
因此它将从分支中"删除"更新的提交.这意味着,在查看旧代码后,您无法再轻松地再次访问此分支中的最新提交.因此,它由bwawok描述的opposide:本地文件不被改变(它们看起来像以前一样"混帐重置--soft"),但历史上被修改(分公司指定截断后提交).
bwawok答案的命令可能是:
git checkout <commit>
Run Code Online (Sandbox Code Playgroud)
您可以使用它来查看旧版本:我的代码昨天看起来如何?
(我知道,我应该在评论中加入这个答案,但stackoverflow不允许我这样做!我的声誉太低了.)
Doc*_*hes 25
git reset c14809fafb08b9e96ff2879999ba8c807d10fb07
就是你要追求的......
小智 5
如果要强制该问题,可以执行以下操作:
git reset --hard c14809fafb08b9e96ff2879999ba8c807d10fb07
Run Code Online (Sandbox Code Playgroud)
让您回到签到时git克隆的样子