博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Git使用五:回到过去
阅读量:5274 次
发布时间:2019-06-14

本文共 776 字,大约阅读时间需要 2 分钟。

 

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号

 

 

转载于:https://www.cnblogs.com/zhongyehai/p/10703714.html

你可能感兴趣的文章
android应用框架搭建之BaseActivity
查看>>
8年javascript总结
查看>>
BZOJ4653 尺取法 + 线段树
查看>>
CSS 设计模式一 元素
查看>>
程序员面试题准备(1)单链表逆置
查看>>
10 | 软件测试工程师需要掌握的非测试知识有哪些?
查看>>
Oreilly Cocoa and Objective C Up and Running
查看>>
Flask的Debug功能非常酷
查看>>
JDBC 配置环境
查看>>
CodeForces 474.D Flowers
查看>>
UVa 12167 & HDU 2767 强连通分量 Proving Equivalences
查看>>
[2018/11/14] 学习的思考
查看>>
android对话框弹出方式动画
查看>>
uml图
查看>>
mac下profile文件(转载)
查看>>
动态添加JavaScript
查看>>
ul测试
查看>>
关于C/C++的trigraphs和Digraphs
查看>>
web-project 故障查看功能 检测是否启动fmd服务
查看>>
AssetBundle
查看>>