使用Git恢复基于commit id的特定提交?

这个问题在这里已经有了答案:

  • 如何将Git存储库恢复到以前的提交? 38个答案

  • 你想把你的回购回滚到那个状态吗? 或者你只是想让你的本地回购看起来像那样?

    如果你这样做

    git reset --hard c14809fa
    

    它将使您的本地代码和本地历史与在此次提交时一样。 但是,如果你想把它推给有新历史的其他人,那就会失败。

    如果你这样做

    git reset --soft c14809fa
    

    它会让你的本地文件变得像他们那样,但留下你的历史等等。

    那么你想要做什么这个重置?

    编辑 -

    您可以将“标签”添加到回购中,然后返回标签。 但标签实际上只是sha1的捷径。

    你可以把它标记为TAG1 ..然后git reset --soft c14809fagit reset --soft TAG1或者git reset --soft c14809fafb08b9e96ff2879999ba8c807d10fb07都会做同样的事情。


    我认为,bwawok的答案在某种程度上是错误的:

    如果你这样做

    git reset --soft c14809fa
    

    它会让你的本地文件变得像他们那样,但留下你的历史等等。

    根据手册:git-reset,“git reset --soft”...

    根本不会触及索引文件或工作树(但将头重置为<commit>,就像所有模式一样)。 这会将所有更改的文件“更改提交”,因为git状态会将其放入。

    所以它会从分支中“删除”更新的提交。 这意味着,在查看旧代码后,您无法轻松再次访问此分支中的最新提交。 所以它按照bwawok的描述做了反对:本地文件没有改变(它们看起来和之前的“git reset --soft”一模一样),但历史被修改了(在指定的提交之后,分支被截断)。

    bwawok的答案可能是:

    git checkout <commit>
    

    你可以用它来窥视旧版本:我的代码昨天是怎么看的?

    (我知道,我应该把这个注释给这个答案,但是stackoverflow不允许我这么做!我的声望太低了。)


    git reset c14809fafb08b9e96ff2879999ba8c807d10fb07是你之后...

    链接地址: http://www.djcxy.com/p/3141.html

    上一篇: Reverting to a specific commit based on commit id with Git?

    下一篇: How to compare files from two different branches?