Git版本回退(reset和revert)

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,否则会有冲突,需要解冲突。

Git版本回退(reset和revert)_第1张图片

Git版本回退(reset和revert)_第2张图片

Git版本回退(reset和revert)_第3张图片

所以每次为了不解冲突最好只向前回滚一次,之后再向前回滚。回滚会自动生成commitID.



Git版本回退(reset和revert)_第4张图片

当然也可以回滚到任意版本。git reset --hard 指定版本的commitID,git push --force。

git回滚到任意版本
先显示提交的log
$ git log -3
commit 4dc08bb8996a6ee02f
Author: Mark 
Date:  Wed Sep 7 08:08:53 2016 +0800

    xxxxx

commit 9cac9ba76574da2167
Author: xxx
Date:  Tue Sep 6 22:18:59 2016 +0800

    improved the requst

commit e377f60e28c8b84158
Author: xxx
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 分支名 commitID

你可能感兴趣的:(Git版本回退(reset和revert))