五、说说git reset命令
2013-10-29 15:25
615 查看
git reset命令加上--soft选项表示软撤销,表示不改动暂存区和工作目录中的内容,假如你执行了某次提交动作,但后来发现还有些文件没有提交,或者根本就不想执行本次提交动作,那就使用git reset --soft命令吧,例如:
$git reset --soft HEAD^
恢复到上次提交时的状态,但此时暂存区和工作目录中的内容并没有撤回,所以执行git diff命令之后是没有任何输出的,执行git diff --cached可得到输出结果。
有了--soft选项,自然就有--hard选项了,--hard表示硬撤销,例如:
$git reset --hard HEAD^
何谓硬撤销,和软撤销不同的是,就连暂存区和工作目录中的内容都回退到上次提交时状态,所以使用git reset --hard之后,git diff和git diff --cached都没有任何输出。
使用--hard命令有个好处是,当我们修改代码时,突然发现此次修改完全是无用的,想回退到修改之前的状态,命令如下:
$git reset --hard HEAD
但是使用git reset --hard命令时也需要注意的是,你好不容易修改好了代码还未提交,结果执行该命令之后所有的成果都灰飞烟灭了。。。
上面说了git reset --soft命令执行之后,暂存区的内容并没有回退,那如过想把暂存区的内容也回退呢?那就使用git reset --mixed命令吧,例如:
$git reset --mixed HEAD^
执行该命令之后,回退到上次commit时的状态,同时暂存区的内容也回退到上次commit时的状态,但工作目录的内容不会回退,此时,执行git diff命令会得到输出结果,但是git diff --cached无任何输出。
那如果git reset命令不加任何选项呢,那它有个默认选项为--mixed,所以执行git reset命令和git reset --mixed效果是一样的。
如果只想从暂存区中回退本次add,也有个命令,那就是git reset --,该命令后面还可以执行某个文件,例如:
$git reset -- main.c
那么上面命令执行之后,只是将暂存区中的main.c撤了回来,其它的文件并不会撤回来。
那上面HEAD以及HEAD^是什么意思呢?
HEAD表示最近一次的commit。
HEAD^表示HEAD的HEAD,即上上次的commit,关于HEAD大家有兴趣可以去看一下,其实就是最近一次提交的一个SHA-1值,所以在使用上面的命令时,可以直接跟上任意一次提交的SHA-1值,表示回退到那次的commit。
$git reset --soft HEAD^
恢复到上次提交时的状态,但此时暂存区和工作目录中的内容并没有撤回,所以执行git diff命令之后是没有任何输出的,执行git diff --cached可得到输出结果。
有了--soft选项,自然就有--hard选项了,--hard表示硬撤销,例如:
$git reset --hard HEAD^
何谓硬撤销,和软撤销不同的是,就连暂存区和工作目录中的内容都回退到上次提交时状态,所以使用git reset --hard之后,git diff和git diff --cached都没有任何输出。
使用--hard命令有个好处是,当我们修改代码时,突然发现此次修改完全是无用的,想回退到修改之前的状态,命令如下:
$git reset --hard HEAD
但是使用git reset --hard命令时也需要注意的是,你好不容易修改好了代码还未提交,结果执行该命令之后所有的成果都灰飞烟灭了。。。
上面说了git reset --soft命令执行之后,暂存区的内容并没有回退,那如过想把暂存区的内容也回退呢?那就使用git reset --mixed命令吧,例如:
$git reset --mixed HEAD^
执行该命令之后,回退到上次commit时的状态,同时暂存区的内容也回退到上次commit时的状态,但工作目录的内容不会回退,此时,执行git diff命令会得到输出结果,但是git diff --cached无任何输出。
那如果git reset命令不加任何选项呢,那它有个默认选项为--mixed,所以执行git reset命令和git reset --mixed效果是一样的。
如果只想从暂存区中回退本次add,也有个命令,那就是git reset --,该命令后面还可以执行某个文件,例如:
$git reset -- main.c
那么上面命令执行之后,只是将暂存区中的main.c撤了回来,其它的文件并不会撤回来。
那上面HEAD以及HEAD^是什么意思呢?
HEAD表示最近一次的commit。
HEAD^表示HEAD的HEAD,即上上次的commit,关于HEAD大家有兴趣可以去看一下,其实就是最近一次提交的一个SHA-1值,所以在使用上面的命令时,可以直接跟上任意一次提交的SHA-1值,表示回退到那次的commit。
相关文章推荐
- CAS服务器配置
- 使用Microsoft.DirectX和Microsoft.DirectX.Sound进行录音时遇到的异常
- php四种基础算法:冒泡,选择,插入和快速排序法
- SNMP常用OID查询
- mysql服务器查询慢原因分析与解决方法小结
- 使用键盘Keyboard操控Winform(2)-传送按键SendKey对照表
- 父亲与茶
- 我的电脑文件打开的很慢怎么回事?
- MySQL定时器开启、调用实现代码
- Linux命令mount用例
- 〖Linux〗zigbee实验之cc2430的cc debugger固件升级实录
- MySql中常用语句
- 在JSP里使用CKEditor和CKFinder
- C语言浮点数除法求三角形面积
- COM组件简介
- javascript 学习笔记之模块化编程
- P1297 小气的小B
- Effective STL 笔记 -- Item 9: Choose carefully among erasing options
- 原创:MVC 5 实例教程(MvcMovieStore 新概念版:mvc5.0,EF6.01) - 1、初露锋芒
- AA记账本 隐私及免责声明