How can I undo a `git commit` locally and on a remote after `git push`

后端 未结 7 1155
隐瞒了意图╮
隐瞒了意图╮ 2020-12-02 03:28

I have performed git commit followed by a git push. How can I revert that change on both local and remote repositories?

$ git log
         


        
7条回答
  •  盖世英雄少女心
    2020-12-02 04:13

    First of all, Relax.

    "Nothing is under our control. Our control is mere illusion.", "To err is human"

    I get that you've unintentionally pushed your code to remote-master. THIS is going to be alright.

    1. At first, get the SHA-1 value of the commit you are trying to return, e.g. commit to master branch. run this:

    git log
    

    you'll see bunch of 'f650a9e398ad9ca606b25513bd4af9fe...' like strings along with each of the commits. copy that number from the commit that you want to return back.

    2. Now, type in below command:

    git reset --hard your_that_copied_string_but_without_quote_mark
    

    you should see message like "HEAD is now at ". you are on clear. What it just have done is to reflect that change locally.

    3. Now, type in below command:

    git push -f
    

    you should see like

    "warning: push.default is unset; its implicit value has changed in..... ... Total 0 (delta 0), reused 0 (delta 0) ... ...your_branch_name -> master (forced update)."

    Now, you are all clear. Check the master with "git log" again, your fixed_destination_commit should be on top of the list.

    You are welcome (in advance ;))

    UPDATE:

    Now, the changes you had made before all these began, are now gone. If you want to bring those hard-works back again, it's possible. Thanks to git reflog, and git cherry-pick commands.

    For that, i would suggest to please follow this blog or this post.

提交回复
热议问题