Git强大的撤销、版本回退功能,让咱们在开发的过程当中可以随意的回到任何一个时间点的状态,本文咱们就来看看Git中的各类后悔药! git
本文是Git系列的第三篇,了解前面的文章有助于更好的理解本文:编辑器
本文将从以下三个方面介绍Git中的后悔药:日志
1.工做区的代码想撤销
2.add到暂存区的代码想撤销
3.提交到本地仓库的代码想撤销code
提交到远程仓库的后悔药咱们统一都在关联远程仓库一文中讲解,敬请期待。blog
可能有一天我正在写代码,写了好久发现写错了,想恢复到一开始的状态,一个笨办法就是把刚刚写的代码一行一行的删除,不过这种方式成本过高,咱们能够经过git checkout -- <file>
命令来撤销工做区的代码修改。以下图: 图片
首先咱们执行了git status命令,发现工做区是干净的,而后执行了cat命令,发现文件只有两行内容,而后经过vi编辑器向文件中添加一行,保存并退出,退出来以后又执行了git status命令,此时工做区的状态已经发生变化,而后咱们执行了git checkout -- git01.txt命令,表示撤销以前的操做,让git01.txt恢复到以前的状态,该命令执行成功以后,咱们再执行cat命令发现文件内容已经恢复了,此时再执行git status,状态也恢复了。开发
若是想要撤销,可是代码已经提交到暂存区了,不用担忧,也能撤销,分两个步骤: get
1.将暂存区的代码撤销到工做区
2.将工做区的代码撤销(具体操做和'工做区的代码想撤销'一致) it
将暂存区的代码撤销,咱们可使用git reset HEAD
命令来实现。以下图:
这里的代码都比较简单,核心的过程就是先执行git reset HEAD
命令,从暂存区撤销,剩下的操做参考'工做区的代码想撤销'一节。
一样的,提交到本地仓库的代码同样也能够撤销,咱们能够利用git reset --hard <版本号>
命令来实现版本回退,该命令中的版本号有几种不一样的写法:
1.可使用HEAD^来描述版本,一个^表示前一个版本,两个^^表示前两个版本,以此类推。
2.也可使用数字来代替^,好比说前100个版本能够写做HEAD~100。
3.也能够直接写版本号,表示跳转到某一个版本处。咱们每次提交成功后,都会生成一个哈希码做为版本号,因此这里咱们也能够直接填版本号,哈希码很长,可是咱们不用所有输入,只须要输入前面几个字符便可,就能识别出来。
看下面一系列的操做:
1.经过git log查看当前提交日志:
2.经过git reset HEAD^^向前回退两个版本:
3.查看日志,发现最后一次提交的版本号是695ce1fe,利用git reset --hard 695ce1fe命令回到回退以前的状态:
4.经过git reset --hard HEAD~1回到上一个版本:
好了,Git中的后悔药咱们就先介绍到这里,有问题欢迎留言讨论。
参考资料:
1.《GitHub入门与实践》
2.《Pro Git》
更多JavaEE和Git资料请关注公众号: