Reverting to a specific commit based on commit id with Git?

This question already has an answer here:

  • How to revert Git repository to a previous commit? 38 answers

  • Do you want to roll back your repo to that state? Or you just want your local repo to look like that?

    if you do

    git reset --hard c14809fa
    

    It will make your local code and local history be just like it was at that commit. But then if you wanted to push this to someone else who has the new history, it would fail.

    if you do

    git reset --soft c14809fa
    

    It will make your local files changed to be like they were then, but leave your history etc. the same.

    So what exactly do you want to do with this reset?

    Edit -

    You can add "tags" to your repo.. and then go back to a tag. But a tag is really just a shortcut to the sha1.

    You can tag this as TAG1.. then a git reset --soft c14809fa , git reset --soft TAG1 , or git reset --soft c14809fafb08b9e96ff2879999ba8c807d10fb07 would all do the same thing.


    I think, bwawok's answer is wrong at some point:

    if you do

    git reset --soft c14809fa
    

    It will make your local files changed to be like they were then, but leave your history etc. the same.

    According to manual: git-reset, "git reset --soft"...

    does not touch the index file nor the working tree at all (but resets the head to <commit>, just like all modes do). This leaves all your changed files "Changes to be committed", as git status would put it.

    So it will "remove" newer commits from the branch. This means, after looking at your old code, you cannot go to the newest commit in this branch again, easily. So it does the opposide as described by bwawok: Local files are not changed (they look exactly as before "git reset --soft"), but the history is modified (branch is truncated after the specified commit).

    The command for bwawok's answer might be:

    git checkout <commit>
    

    You can use this to peek at old revision: How did my code look yesterday?

    (I know, I should put this in comments to this answer, but stackoverflow does not allow me to do so! My reputation is too low.)


    git reset c14809fafb08b9e96ff2879999ba8c807d10fb07是你之后...

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

    上一篇: git恢复到某个提交

    下一篇: 使用Git恢复基于commit id的特定提交?