How do I revert master branch to a tag in git?

We have branches origin and develop. The initial state of master was tagged at tag_ABC.

We have few changes made to the develop branch and pushed to origin. Then we have accidentally merged develop into master and pushed to origin.

Now we would like to revert master to the checkpoint tag_ABC. How can we do that?


You can do

git checkout master
git reset --hard tag_ABC
git push --force origin master

Please note that this will overwrite existing history in the upstream repo and may cause problems for other developers who have this repo checked out.

As per Luke Wenke's comment, other developers who have got master checked out will have to do the following:

git pull
git reset --hard origin/master

This isn't a direct answer to the question but this page comes back when searching for ways to revert a branch's code to a tag release.

Another way is to create a diff between the current state of the branch and the tag you want to revert to and then apply that to the branch. This keeps the version history correct and shows the changes going in then coming back out again.

Assuming your branch is called master and the tag you want to go back to is called 1.1.1

git checkout 1.1.1
git diff master > ~/diff.patch
git checkout master
cat ~/diff.patch | git apply
git commit -am 'Rolled back to version 1.1.1'
git push origin master