Git使用五:回到过去
reset:将仓库里面的内容恢复回暂存区,类似于从仓库里检出文件到暂存区
checkout:将暂存区的文件恢复回工作区,即,把暂存区的文件检出到工作区

下面是之前三次提交的内容


三个区域的文件状态:

执行命令:git reset HEAD~
这里~代表上一个版本,这个时候,就会回到第二次提交的状态,而仓库和暂存区的文件也会发生变化
~~代表上上个版本,以此类推,也可以这样表示~10(往回退10个版本)

这个时候,git检测到工作区的文件比暂存区的文件内容更新,所以会报没有被暂存的提示

再次执行git log,只显示前面两个提交记录了

reset命令的选项
git reset --mixed HEAD~(默认)
移动HEAD的指向,将其指向上一个快照
将HEAD移动后指向的快照回滚到暂存区域
git reset --soft HEAD~
移动HEAD的指向,将其指向上一个快照,不会修改暂存区的内容(撤销上一次的提交)
git reset --hard HEAD~
移动HEAD的指向,将其指向上一个快照
将HEAD移动后指向的快照回滚到暂存区域
将回滚后暂存区的文件还原到工作目录
执行hard命令前

执行后

更新历史也只剩一个了

文件状态

总结:
1.移动 HEAD 的指向(--soft)
2.将快照回滚到暂存区域([--mixed],默认)
3.将暂存区域还原到工作目录(--hard)
4.回滚到指定快照:git reset bfde835f7c9ef846

5.回滚个别文件(不会改变head指针):git reset 版本快照 文件名/路径
6.reset不仅可以回滚,还可以往前滚:git reset 版本快照的ID号

Git使用五:回到过去的更多相关文章
- git学习(五):git diff魔法
不同参数下git diff输出并不相同,理解了工作区,暂存区和版本库的关系之后就很容易理解diff了. 工作区.暂存区和版本库的目录树浏览 清除工作区中未被git管理的文件 git clean -fd ...
- git学习——<五>git分支
git学习——<一>git安装 git学习——<二>git配置文件 git学习——<三>git操作 git学习——<四>git版本管理 一.提出问题 今 ...
- 小丁带你走进git世界五-远程仓库
一.文件,指令讲解 首先讲一下远程仓库和本地仓库在文件上面的区别,首先我们来看下对比图(当然这里说的区别是在于.git文件下面的文件内容,至于里面内容我们不会关注)這裡我们进行了相同的操作就是本地仓库 ...
- 【git学习五】git基础之git分支
1.背景 最早用github的时候,我傻傻的问舍友大神,git里面的branch是干什么的,他用了非常直白的解释,我至今还记得."branch就是你能够自己建立 ...
- Git:五、操作远程仓库
0.一般流程 1)自己新写:GitHub创建有README的库 -> clone到本地 2)修改已有:GitHub上fork别人的仓库 -> clone自己账号下的库到本地 1.创建库 右 ...
- git第五节--git branch--分支管理
@git branch :查看当前仓库所有分支,及当前所处的分支 @git branch XXX:创建分支XXX @git checkout XXX:切换到分支XXX下 @git checkout - ...
- Git(五)IDEA应用Git
一.IDEA客户端git 1.提交代码到本地仓库 1. 关联Git,创建本地库 关联git 配置git环境变量 设置本地仓库目录,一般是IDEA工作空间,选择VCS->Import into V ...
- 项目管理---git----快速使用git笔记(五)------本地项目代码提交到远程仓库---新建项目
上一篇我们已经知道了怎么从远程仓库获取项目文件代码. 项目管理---git----快速使用git笔记(四)------远程项目代码的首次获取 git还有一种使用场景是 我本来在电脑里就有一个项目,现在 ...
- Git系列五之分支管理
1.Git分支管理 分支即是平行空间,假设你在为某个手机系统研发拍照功能,代码已经完成了80%,但如果将这不完整的代码直接提交到git仓库中,又有可能影响到其他人的工作,此时我们便可以在该软件的项目之 ...
随机推荐
- .net+mvc,ueditor
.net+mvc的百度编辑器ueditor 一.下载百度编辑器:http://ueditor.baidu.com/website/download.html 选择.net版本 二.解压后在mvc项目中 ...
- shiro--《跟我学Shiro》网友学习系列
第八章 拦截器机制——<跟我学Shiro> - 开涛的博客—公众号:kaitao-1234567,一如既往的干货分享 - ITeye博客http://jinnianshilongnian. ...
- python,获取用户输入,并且将输入的内容写到.txt
该功能缺点是必须保证该文件不存在的情况才会成功 f=open('E:/mywork/保存文件.txt','x') def userwrite(code): if code=='w': f.close( ...
- spring-session+Redis实现Session共享
关于session共享的方式有多种: (1)通过nginx的ip_hash,根据ip将请求分配到对应的服务器 (2)基于关系型数据库存储 (3)基于cookie存储 (4)服务器内置的session复 ...
- Linux 如何通过命令查看一个文件的某几行(中间几行或最后几行)
linux 如何显示一个文件的某几行(中间几行) [一]从第3000行开始,显示1000行.即显示3000~3999行 cat filename | tail -n +3000 | head -n 1 ...
- 使用多线程提高Rest服务性能
⒈使用Runnable异步处理Rest服务 /** *使用Runnable异步处理Rest服务 * @return */ @GetMapping("/order") public ...
- Matplotlib(used in paper)
1. 转自:matplotlib 使用 plt.savefig() 输出图片去除旁边的空白区域 注:如果不采用 subplot_adjust + margin(0,0),而是在fig.savefig( ...
- Linker Scripts2--链接器选项概述
1.前言 为了尽可能的与其它链接器兼容,GNU链接器ld涵盖了很多情况.因此,有很多选项可以控制链接器的行为. 2. 命令行选项概述 链接器支持很多命令行选项,在特定的上下文,实际应用中只有很少一部分 ...
- u3d人物控制
//https://blog.csdn.net/Htlas/article/details/79188008 //人物移动 http://gad.qq.com/article/detail/28921 ...
- $Django Rest Framework-序列化组件
1 序列化组件 e=serializers.SerializerMethodField() # 方法名:叫get_字段名, 参数,返回字典 def get_e(self,obj): #obj为b ...