Here's what I did on my supposed-to-be-stable branch...
% git rebase master
First, rewinding head to replay your work on top of it...
Fast-forwarded alpha-0.3.0 to master.
% git status
# On branch alpha-0.3.0
# Your branch is ahead of 'origin/alpha-0.3.0' by 53 commits.
#
nothing to commit (working directory clean)
% git push
Fetching remote heads...
refs/
refs/heads/
refs/tags/
refs/remotes/
'refs/heads/master': up-to-date
updating 'refs/heads/alpha-0.3.0'
from cc4b63bebb6e6dd04407f8788938244b78c50285
to 83c9191dea88d146400853af5eb7555f252001b0
done
'refs/heads/unstable': up-to-date
Updating remote server info
That was all a mistake as I later realized. I'd like to undo this entire process, and revert the alpha-0.3.0 branch back to what it was.
What should I do?
A way to do it without losing the changes you wanted:
git reset cc4b63b
git stash
git push -f origin alpha-0.3.0
git stash pop
Then you can choose the files you meant to push
git revert
is less dangerous than some of the approaches suggested here:
prompt> git revert 35f6af6f77f116ef922e3d75bc80a4a466f92650
[master 71738a9] Revert "Issue #482 - Fixed bug."
4 files changed, 30 insertions(+), 42 deletions(-)
prompt> git status
# On branch master
# Your branch is ahead of 'origin/master' by 1 commit.
#
nothing to commit (working directory clean)
prompt>
Replace 35f6af6f77f116ef922e3d75bc80a4a466f92650 with your own commit.
Scenario 1: If you want to undo the last commit say 8123b7e04b3, below is the command(this worked for me):
git push origin +8123b7e04b3^:<branch_name>
Output looks like below:
Total 0 (delta 0), reused 0 (delta 0)
To https://testlocation/code.git
+ 8123b7e...92bc500 8123b7e04b3^ -> master (forced update)
Note: To update the change to your local code (to remove the commit locally as well) :
$ git reset --hard origin/<branchName>
Message displayed is : HEAD is now at 8a3902a comments_entered_for_commit
Additional info: Scenario 2: In some situation, you may want to revert back what you just undo'ed (basically undo the undo) through the previous command, then use the below command:
git reset --hard 8123b7e04b3
Output:
HEAD is now at cc6206c Comment_that_was_entered_for_commit
More info here: https://github.com/blog/2019-how-to-undo-almost-anything-with-git
I believe that you can also do this:
git checkout alpha-0.3.0
git reset --hard cc4b63bebb6
git push origin +alpha-0.3.0
This is very similar to the last method, except you don't have to muck around in the remote repo.
The existing answers are good and correct, however what if you need to undo the push
but:
Use this command to revert the change to the ref:
git push -f origin refs/remotes/origin/<branch>@{1}:<branch>
Another way to do this:
git push origin --delete <branch_name>
)git reset --hard HEAD^
git push origin -f
This will remove the last commit from your local device as well as Github
The accepted solution (from @charles bailey) is highly dangerous if you are working in a shared repo.
As a best practice, all commits pushed to a remote repo that is shared should be considered 'immutable'. Use 'git revert' instead: http://www.kernel.org/pub/software/scm/git/docs/user-manual.html#fixing-mistakes
you can use the command reset
git reset --soft HEAD^1
then:
git reset <files>
git commit --amend
and
git push -f
If you want to ignore the last commit that you have just pushed in the remote branch: this will not remove the commit but just ignoring it by moving the git pointer to the commit one earlier, refered by HEAD^ or HEAD^1
git push origin +HEAD^:branch
But if you have already pushed this commit, and others have pulled the branch. In this case, rewriting your branch's history is undesirable and you should instead revert this commit:
git revert <SHA-1>
git push origin branch
git push origin +7f6d03:master
This will revert your repo to mentioned commit number
Undo multiple commits
git reset --hard 0ad5a7a6
(Just provide commit SHA1 hash)
Undo last commit
git reset --hard HEAD~1
(changes to last commit will be removed ) git reset --soft HEAD~1
(changes to last commit will be available as uncommited local modifications)
Source: Stackoverflow.com