Git中的各种后悔药
Git强大的撤销、版本回退功能,让我们在开发的过程中能够随意的回到任何一个时间点的状态,本文我们就来看看Git中的各种后悔药!
本文是Git系列的第三篇,了解前面的文章有助于更好的理解本文:
本文将从如下三个方面介绍Git中的后悔药:
1.工作区的代码想撤销 2.add到暂存区的代码想撤销 3.提交到本地仓库的代码想撤销
提交到远程仓库的后悔药我们统一都在关联远程仓库一文中讲解,敬请期待。
工作区的代码想撤销
可能有一天我正在写代码,写了很久发现写错了,想恢复到一开始的状态,一个笨办法就是把刚刚写的代码一行一行的删除,不过这种方式成本太高,我们可以通过git checkout -- <file>
命令来撤销工作区的代码修改。如下图:
首先我们执行了git status命令,发现工作区是干净的,然后执行了cat命令,发现文件只有两行内容,然后通过vi编辑器向文件中添加一行,保存并退出,退出来之后又执行了git status命令,此时工作区的状态已经发生变化,然后我们执行了git checkout — git01.txt命令,表示撤销之前的操作,让git01.txt恢复到之前的状态,该命令执行成功之后,我们再执行cat命令发现文件内容已经恢复了,此时再执行git status,状态也恢复了。
add到暂存区的代码想撤销
如果想要撤销,但是代码已经提交到暂存区了,不用担心,也能撤销,分两个步骤:
1.将暂存区的代码撤销到工作区 2.将工作区的代码撤销(具体操作和’工作区的代码想撤销’一致)
将暂存区的代码撤销,我们可以使用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》
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法