I have a checkout copy of a remote git repository in my workstation. I have accidentally committed a change in my local and pushed to remote. Now I want to remove the last commit and go back to the previous commit and the same should be pushed to remote.
I am okay if it is a new commit with a commit message. How to do that?
There are two Git commands a developer must use in order to discard all local changes in Git, remove all uncommited changes and revert their Git working tree back to the state it was in when the last commit took place. The commands to discard all local changes in Git are: git reset –hard. git clean -fxd.
If nobody has yet cloned your updated remote repo, you can:
git reset --hard HEAD~
git push --force
That will force the local and remote history to discard the latest commit.
(Check first with a git fetch that no new commits had been pushed since your incorrect commit)
If a new history isn't an option, then a git revert
is more secure, and will result in a new commit canceling the previous one: you can then push that new commit.
I'd advise against pushing with --force an alternative history. Anyone who already pulled your changes will have a completely screwed history to deal with when pulling new stuff.
A far safer option is to simply do
git revert HEAD~1
git push origin master
git revert will record a new commit that cancels all of the effects of the previous one
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With