I'm trying to delete the last 2 commits in one of my GitHub repositories. I've tried as suggested here : git push -f origin HEAD^^:master. It seems that it works, the last two commits are removed.
Then I deleted them from my local repository with git rebase -i HEAD~2. I remove the lines than are related with those commit, and check with git log that they are correctly removed.
After that I make some changes in my local repository, make a new commit and push to GitHub. The problem is that in my GitHub account I have the previous two commit I've tried to delete.
I think the problem it's in my local repository because if I clone my Github repository to my local, and make some changes here when I push a new commit those old commits aren't pushed to GitHub.
Any idea?
To remove the last two commits locally I'd suggest using:
Rebase is a completely different operation that won't help you here.
The following works for me
It removes the last
n
commits from local repo, asHEAD^
removes only one. If you need to remove these changes from remote, you might need to force push as you will be behind remote.If you want to remove the 2 (two) last commits, there is an easy command to do that:
You can change the
2
for any number of last commits you want to remove.And to push this change to remote, you need to do a
git push
with the force (-f
) parameter:However, I don't recommend to do any
git
command with-f
or--hard
options involved if there are new commits on remote (Github) after this commits that you want to remove. In that case, always usegit revert
.