git reset HEAD~
撤銷掉最近一次提交,但是改動的內(nèi)容還在工作區(qū)內(nèi)又碌,通過add和commit操作能重新提交拗小,且最近一次提交的log不再存在银还。
git reset —hard HEAD~(會丟棄掉先前的提交,直接回到上一次log的commitID)
git reset HEAD~ 等價于 git reset 上一次的commitID號(不會丟棄掉先前的提交,還在本地工作區(qū)腐碱,需要重新add)
git revert HEAD
撤銷掉最近一次提交之后榕暇,把此次的行為變成了一次提交。原來改動的內(nèi)容不再在工作區(qū)內(nèi)喻杈,相當(dāng)于git reset --hard HEAD~了彤枢。git revert每次只能git revert HEAD,否則會有沖突,需要解沖突筒饰。
所以每次為了不解沖突最好只向前回滾一次缴啡,之后再向前回滾〈擅牵回滾會自動生成commitID.
當(dāng)然也可以回滾到任意版本业栅。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