Can not push changes after using git reset --hard

前端 未结 2 1004
日久生厌
日久生厌 2021-01-29 22:38

I had a mistake and commit some changes to git which I should not have committed. After I made the commit, I pushed my changes. I then used the following commands to try and re

相关标签:
2条回答
  • 2021-01-29 23:05
    git push -f origin myBranch 
    

    should work (provided you are aware this can be dangerous if MyBranch was already fetched by others in their own repo)

    Note: if your remote repo ('origin') has its config set with

    receive.denyNonFastForwards true
    

    it will deny any non fast-forward push (even when forced).
    See "Is there a way to configure git repository to reject 'git push --force'?".


    The OP user654019 reports

    I managed to solve the problem this time by setting denyNonFastForwards to false and using -f to force the push

    If the OP didn't have access to the repo, he/she would have to:

    • reset the local HEAD to its original position (see "Recover from git reset --hard?"):
      git reset HEAD@{1}
    • make a new commit which cancel your merge, as described in the ProGit book, with git revert:
      git revert -m 1 HEAD~ (in your case)

    By example:

    $ git revert -m 1 [sha_of_C8]
    Finished one revert.
    [master 88edd6d] Revert "Merge branch 'jk/post-checkout'"
     1 files changed, 0 insertions(+), 2 deletions(-)
    

    revert a merge

    A complete discussion on how to revert a merge can be found here.

    The idea remains to generate only new commits, including one reverting the changes introduced by the merge commit.
    You then can push that new commit, as a fast-forward change.

    0 讨论(0)
  • 2021-01-29 23:12

    You need to specify what ref you want to push:

    git push -f origin MyBranch
    
    0 讨论(0)
提交回复
热议问题