git 查看和撤销
linux下文本的新建和追加内容
git cat-file -p ID可查看当前master的数据
观察Git 內部如何储存Commit
随便便抓一個 Commit 的 SHA1 开始:
git cat-file -p a08181bf3(观察这个commit,找出 tree 位置 )
git cat-file -p ea44d629 (观察 tree,找出任一个 blob SHA1)
git cat-file -p d9647d8a (观察blob 的內容)
通过git diff命令,可比较工作区与暂存区的差异
“diff --git a/index.html b/index.html” ,代表的是对git里面的命令,进行可视化显示。其中“a/index.html”和“b/index.html ”分别代表的是暂存区和工作区中的index.html文件。
index 6cef113..684ae9d 代表两个版本的git哈希值(暂存区的文件对象对应的哈希值6cef113,与工作区文件对应的哈希值684ae9d )。
我们可以通过git cat-file -t查看git哈希值的类型
可通过 git cat-file -p查看其内容
"@@ -1,2 +1,3 @@" 代表差异的定位语句,减号后是原文件的开始行号和行数(若只有一行,就不显示行数)。加号后是新文件的开始行号和行数。
上面的意思表示原文件从第一行开始,只有两行。新文件从第一行开始,共三行
"---" 表示变动前的文件
"+++" 表示变动后的文件
“abcdef”前面的+号,代表该行是新增的。
关于文件内容内容的每一行最前面,会有一个标记位。
如果为空,表示该行无变化
如果是感叹号(!),表示该行有改动
如果是减号(-),表示该行被删除
如果是加号(+),表示该行为新增
100644 代表当前文件类型和权限,100代表regular file,644代表权限是:拥有者(读+写),所属组(读),其他人(读)
四、如何比较工作区与本地仓库的差异
通过git diff HEAD命令,可比较工作区与本地仓库的差异。
五、如何比较暂存区与本地仓库的差异
通过git diff --cached 命令,可比较工作区与本地仓库的差异。(没测试成功,原因不明)
六、如何撤回工作区的改动
在git的工作区里面,有的时候,不小心改动了某个文件,可以使用git checkout -- file来取消上次改动,原理:把暂存区的数据加载到工作区覆盖掉修改
七、如何撤回工作区的提交
撤回工作区的提交,也就是将暂存区里面,因本次工作区里提交,而修改的blog对象,回退到修改为之前的blog对象。
有的时候,需要提交到暂存区的文件很多,为了简便,我们执行了如下命令:
git add .
将工作区内所有文件(已经添加git跟踪的文件和尚未添加到git跟踪的文件),统统搞到暂存区,那么怎样撤回其中一个多少几个文件呢?
当然是有的,我们可以使用git reset HEAD(或者git reset,HEAD可缺省)来从暂存区删除内容,原理:在版本库中把当前版本数据加载到暂存区覆盖掉原来的
八、如何撤回暂存区的提交
当我们执行了git commit 的时候,发现提交的内容有问题,或是不应该提交,我们怎样取消上次提交呢?
其实,就是改变版本库当前分支指向的commit对象。首先来了解什么是HEAD
HEAD是一个引用,引用的是当前的分支,如果当前处于master分支,那么HEAD就会指向master
比如,通过git log查看所有提交(思考:git log 跟 git reflog 的区别)
git log只有当前所在版本之前提交的commit记录,git reflog有所有对本地版本库的操作记录
如何比较两次提交(两个版本)中的文件的差异
可以用git diff 哈希值 哈希值,哈希值是Blog类型
当然,我们也可以通过git cat-file -p命令查对应commit(版本)的内容
branch 指向該 branch 最新的 commit
HEAD 指向 current branch
git 查看和撤销的更多相关文章
- 【Git】Git 本地的撤销修改和删除操作
一:撤销操作 比如我现在在readme.txt文件里面增加一行 内容为555555555555,我们先通过命令查看如下: 在我未提交之前,我发现添加5555555555555内容有误,所以我得马上恢复 ...
- mzy git学习,撤销修改(二)
git checkout – file: 撤销我们对工作区的修改(没有提交到暂存区) 当我们在工作区修改了之后,并没有提交到暂存区,如果要撤销对 某个文件的修改的话,就使用 git checkout ...
- 『现学现忘』Git基础 — 23、Git中的撤销操作
目录 1.撤销操作说明 2.撤销工作区中文件的修改 3.撤销暂存区中文件的修改 4.总结 1.撤销操作说明 我们在使用Git版本管理时,往往需要撤销某些操作.比如说我们想将某个修改后的文件撤销到上一个 ...
- git查看日志
git查看日志 git log -n 显示前N条记录 git log -3 退出log命令 直接输入: q git log --stat -n 显示提交的文件的简要的修改统计 $ git log -- ...
- Git查看、删除、重命名远程分支和tag【转】
转自:http://zengrong.net/post/1746.htm 本站文章除注明转载外,均为本站原创或者翻译. 本站文章欢迎各种形式的转载,但请18岁以上的转载者注明文章出处,尊重我的劳动,也 ...
- git查看某个文件修改历史
[git查看某个文件修改历史] 1.使用git命令 git whatchanged charge.lua 显示某个文件的每个版本提交信息:提交日期,提交人员,版本号,提交备注(没有修改细节) git ...
- git命令--git checkout 之 撤销提交到暂存区的更改
SYJ@WIN-95I6OG3AT1N /D/gitlab/ihr-kafka-produce (master) $ git status [由于工作区文件被修改了,所以显示为红色] On branc ...
- git 学习之撤销和删除
在实际的工作和学习中我们经常的会对文件进行修改,但是或多或少的就会发现由于某些原因修改是错误的这时候就需要对所做的修改进行撤销,更或者某些时候需要对文件进行删除.本节就会告诉大家如何操作. 撤销操作 ...
- Git查看、删除远程分支和tag
本站文章除注明转载外,均为本站原创或者翻译. 本站文章欢迎各种形式的转载,但请18岁以上的转载者注明文章出处,尊重我的劳动,也尊重你的智商: 本站部分原创和翻译文章提供markdown格式源码,欢迎使 ...
随机推荐
- js:实现自定义事件对象接口
网易2017内推笔试题 要求: 请实现下面的自定义事件Event对象的接口,功能见注释(测试1) 该Event对象的接口需要能被其他对象拓展复用(测试2) //测试1 Event.on('test', ...
- Weekly Contest 129
1020. Partition Array Into Three Parts With Equal Sum Given an array A of integers, return true if a ...
- 基于Spark的FPGrowth算法的运用
一.FPGrowth算法理解 Spark.mllib 提供并行FP-growth算法,这个算法属于关联规则算法[关联规则:两不相交的非空集合A.B,如果A=>B,就说A=>B是一条关联规则 ...
- Zookeeper原理分析之存储结构ZkDatabase
ZKDatabase在内存中维护了zookeeper的sessions, datatree和commit logs集合. 当zookeeper server启动的时候会将txnlogs和snapsho ...
- Flask从入门到精通之数据模型之间的关系
关系型数据库使用关系把不同表中的行联系起来.上篇随笔中介绍的用户和角色之间是一种简单的关系.即角色到用户的一对多关系,因为一个角色可属于多个用户,而每个用户都只能有一个角色.这种关系在模型中的表示方法 ...
- VUE 项目刷新路由指向index.html
背景描述: VUE 项目经过 npm run bulid 生成静态文件上传到服务器后,当我们切换路由并刷新页面,nginx 服务器会报 502 或者 404 错误. 原因分析: 我猜测是因为在 VUE ...
- vue中axios访问Java后端跨域问题解决
问题背景: 前后端分离,前端选用Vue,后端选用Java,vue编译出的静态页面采用ngix发布,在前端访问后端时出现跨域问题. 解决方法: 跨域的问题解决方法有好多种,这里是通过服务端解决,以下是代 ...
- css实现栏目两边斜线的效果
实现效果: 具体实现代码: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> ...
- 【BZOJ2127】happiness 最小割
题目大意:有一个$n\times m$的矩阵,矩阵的每个位置上有一个同学,经过一个学期的相处,每个同学和前后左右相邻的同学互相成为了好朋友.这学期要分文理科了,每个同学对于选择文科与理科有着自己的喜悦 ...
- 【ROS系列】使用QT编写ROS订阅、发布程序
Linux下一直使用QT进行开发,支持cmake使得很容易导入其他工程.学习ROS过程中,很多函数名称难记,使用QT不仅可以提示补全,还为了以后开发GUI方便吧. 1.安装ros_qtc_plugin ...