How to go back to previous commit without losing last commit in Git?

后端 未结 3 1133
长情又很酷
长情又很酷 2021-02-07 08:01

Here is what I want to do. I want to go back to 2 commits before, bring back the files that changed in that commit as a new commit maybe. But I do not want to lose my last commi

相关标签:
3条回答
  • 2021-02-07 08:41

    With $ git reflog you can see the last hashes which are useful to return to a previous state after having lost the last commits by forcing a push from a previous commit.

    Also:

    $ git fsck --no-reflog
    $ git show <hash>
    $ git checkout -b <new-branch> <hash>
    

    GL

    Source

    0 讨论(0)
  • 2021-02-07 08:47

    If you want to go back, say 2 commits previous, you can just do git checkout HEAD~2. This will get you all as it was then. If you were on branch master, git checkout master will bring you back to the present. If, however, you want to keep the current state but start a new developemnt branch there, git checkout -b HEAD~2 will start a new branch there. In case you want to rewind master but not loose your current, unfinished/broken work, do

    git branch wip           # New branch ends a current tip
    git reset --hard HEAD~2  # Old branch rewound, get files from then
    
    0 讨论(0)
  • 2021-02-07 08:57

    revert makes a new commit that reverts changes made by an older commit. reset --hard changes the HEAD of the current branch to the specified commit. checkout switches the working copy to the specified branch or commit.

    When you reset a branch to an older commit the newer commits are lost if they are not parts of other branches or ancestors of tags (they are still accessible via reflog though).

    It is not clear what do you need to do, the most probable solutions are revert (to fully revert an older commit or series of commits) and rebase -i (to change an older commit or delete it from the history).

    0 讨论(0)
提交回复
热议问题