git reset HEAD~
撤销掉最近一次提交,但是改动的内容还在工作区内,通过add和commit操作能重新提交,且最近一次提交的log不再存在。
git reset —hard HEAD~(会丢弃掉先前的提交,直接回到上一次log的commitID)
git reset HEAD~ 等价于 git reset 上一次的commitID号(不会丢弃掉先前的提交,还在本地工作区,需要重新add)
git revert HEAD
撤销掉最近一次提交之后,把此次的行为变成了一次提交。原来改动的内容不再在工作区内,相当于git reset --hard HEAD~了。git revert每次只能git revert HEAD,否则会有冲突,需要解冲突。
所以每次为了不解冲突最好只向前回滚一次,之后再向前回滚。回滚会自动生成commitID.
当然也可以回滚到任意版本。git reset --hard 指定版本的commitID,git push --force。
git回滚到任意版本
先显示提交的log
$ git log -3
commit 4dc08bb8996a6ee02f
Author: Mark <xxx@xx.com>
Date: Wed Sep 7 08:08:53 2016 +0800
xxxxx
commit 9cac9ba76574da2167
Author: xxx<xx@qq.com>
Date: Tue Sep 6 22:18:59 2016 +0800
improved the requst
commit e377f60e28c8b84158
Author: xxx<xxx@qq.com>
Date: Tue Sep 6 14:42:44 2016 +0800
changed the password from empty to max123
回滚到指定的版本
git reset --hard e377f60e28c8b84158
强制提交
git push -f origin master
完美
基于commit号新建分支
git checkout -b 分支名<branch name> commitID