I would like to know how to delete a commit.
By delete
, I mean it is as if I didn\'t make that commit, and when I do a push in the future, my changes wi
git rebase -i HEAD~2
Here '2' is the number of commits you want to rebase.
'git rebase -i HEAD`
if you want to rebase all the commits.
Then you will be able to choose one of these options.
p, pick = use commit
r, reword = use commit, but edit the commit message
e, edit = use commit, but stop for amending
s, squash = use commit, but meld into previous commit
f, fixup = like "squash", but discard this commit's log message
x, exec = run command (the rest of the line) using shell
d, drop = remove commit
These lines can be re-ordered; they are executed from top to bottom. If you remove a line here THAT COMMIT WILL BE LOST. However, if you remove everything, the rebase will be aborted. Note that empty commits are commented out
You can simply remove that commit using option "d" or Removing a line that has your commit.
use git revert https://git-scm.com/docs/git-revert .It will revert all code then you can do next commit.Then head will point to that last commit. reverted commits never delete but it will not affect on you last commit.
Take backup of your code in to temp folder. Following command will reset same as server.
git reset --hard HEAD
git clean -f
git pull
If you want to keep your changes , and remove recent commits
git reset --soft HEAD^
git pull
Say we want to remove commits 2 & 4 from the repo.
commit 0 : b3d92c5
commit 1 : 2c6a45b
commit 2 : <any_hash>
commit 3 : 77b9b82
commit 4 : <any_hash>
Note: You need to have admin rights over the repo since you are using --hard
and -f
.
git checkout b3d92c5
Checkout the last usable commit.git checkout -b repair
Create a new branch to work on.git cherry-pick 77b9b82
Run through commit 3.git cherry-pick 2c6a45b
Run through commit 1.git checkout master
Checkout master.git reset --hard b3d92c5
Reset master to last usable commit.git merge repair
Merge our new branch onto master.git push -f origin master
Push master to the remote repo.Reset on local branch
git reset --hard HEAD~<Number of commit> So git reset --hard HEAD~3
Force push to origin
git push -f origin
What I do usually when I commit and push (if anyone pushed his commit this solve the problem):
git reset --hard HEAD~1
git push -f origin
hope this help