Monday, 24 September 2018

How to revert a merge commit that's already pushed to remote branch

1. How to revert a merge commit that's already pushed to remote branch 

2. Revert a merge after being pushed 

3. Undo a git merge that has been pushed to the server

5. Git HowTo: revert a commit already pushed to a remote repository

You could follow these steps to revert the incorrect commit(s) or to reset your remote branch back to correct HEAD/state
1. git checkout development
2. Use git log -5 to show latest 5 commits, which will result as below:
$ git log -5
commit 6e10182080307215e70d5d843d29ddfb302d776f (HEAD -> development, origin/development, origin/HEAD)
Author: Pritom K Mondal <pritomkucse@gmail.com>
Date:   Thu Jan 25 20:53:19 2018 +0600

    Test

commit f262e20f51171d2d24d9f15cd2abcf73a641ac43
Author: Pritom K Mondal <pritomkucse@gmail.com>
Date:   Thu Jan 25 20:52:34 2018 +0600

    Test

commit f808058d419e9d71b9f4bc27bf272241c0bf9971
Author: Pritom K Mondal Kumar <pritomkucse@gmail.com>
Date:   Thu Jan 25 14:45:54 2018 +0000

    Repository created
3. git reset f262e20f51171d2d24d9f15cd2abcf73a641ac43 (i.e. your commit number where you want to go)
4. run the git status to show all the changes that were part of the wrong commit, if you don't want to see untracked files run git status --untracked-files=no or as shortcut run git status -uno
5. simply run git reset --hard to revert all those changes
7. force-push your local branch to remote and notice that your commit history is clean as it was before it got polluted.
git push -f origin development
8. But by any chance if you need to abort reset you need to revert above reset option as git reset 'HEAD@{1}' as short answer.
9. Long answer is type git reflog and go to desired location.
$ git reflog
1123175 (HEAD -> master, origin/master, origin/HEAD) HEAD@{0}: reset: moving to HEAD
1123175 (HEAD -> master, origin/master, origin/HEAD) HEAD@{1}: reset: moving to HEAD
1123175 (HEAD -> master, origin/master, origin/HEAD) HEAD@{2}: reset: moving to 1123175d5b42a8f459aff1cd7bb59082e0087775
b1110db HEAD@{3}: merge remotes/origin/branch1: Merge made by the 'recursive' strategy.
1123175 (HEAD -> master, origin/master, origin/HEAD) HEAD@{4}: commit: Test from master
d81337f HEAD@{5}: commit: Test from master

0 comments:

Post a Comment