git版本回退(浅谈 git reset 与 git revert)
git这个工具,程序员大爱,实在是太优秀了。
不过有的时候,可能需要回退到前一个版本,或者前n个版本,或者要丢弃中间的某一个版本,这个时候,该git reset 与 git revert 出场了。
不得不说,两者各有千秋,在不同的场景下,择合适用之。
git revert af123xxxx (想要丢弃的那个commit的版本号)
意为 仅撤销掉 版本号af123xxx 对应的提交 既不会影响到该版本之后的提交也不会影响到该版本之前的提交,并且会新增加一个版本号,push 下即可,简单易用。
git reset af123xxxx (想要回到的那个commit的版本号)
意为 回到af123xxxx 这个版本, 该版本之后的提交都丢弃,但不会新增版本号,也就是说那些代码其实都还在的,如果需要彻底删除掉那些代码,这时候需要 往远程推一下。
需要注意的是,此时的版本号比远程的要低,直接push 的话,是push 不动的,需要 -f (force) 参数来帮忙。
下面记录下某次的回退。
1) git reset a2bcxxxxxxxxxxx --hard
2) git log
3) git status
On branch master
Your branch is behind 'origin/master' by 2 commits, and can be fast-forwarded.
(use "git pull" to update your local branch)
nothing to commit, working directory clean
OK,成功回退了三个commit!
4) git push -f origin master
推到远程,OK,3个版本的代码已弃。
附:
git 分支创建
git checkout -b br
(创建并切换到br)
git 分支删除
本地删除:
git branch -D br
远程删除:
git push origin :br
(origin 后面有空格)