Git索引
来源:互联网 发布:淘宝订单取消后果严重 编辑:程序博客网 时间:2024/04/30 17:35
原文: http://gitbook.liuhui998.com/7_4.html
git中的索引(index)是一个存放了排好序的路径的二进制文件(通常是.git/index), 每一个条目都附带有一个块对象的SHA1值以及访问权限;
git ls-files可以显示出索引的内容:
<p style="margin-top:0px; margin-bottom:10px; padding-top:0px; padding-bottom:0px"></p><div><span class="pln">$ git ls</span><span class="pun" style="color:rgb(102,102,0)">-</span><span class="pln">files </span><span class="pun" style="color:rgb(102,102,0)">--</span><span class="pln">stage</span></div><div><span class="pln">100644 </span><span class="lit" style="color:rgb(0,102,102)">63c918c667fa005ff12ad89437f2fdc80926e21c</span><span class="pln"> </span><span class="lit" style="color:rgb(0,102,102)">0</span><span class="pln"> </span><span class="pun" style="color:rgb(102,102,0)">.</span><span class="pln">gitignore</span></div><div><span class="pln">100644 </span><span class="lit" style="color:rgb(0,102,102)">5529b198e8d14decbe4ad99db3f7fb632de0439d</span><span class="pln"> </span><span class="lit" style="color:rgb(0,102,102)">0</span><span class="pln"> </span><span class="pun" style="color:rgb(102,102,0)">.</span><span class="pln">mailmap</span></div><div><span class="pln">100644 </span><span class="lit" style="color:rgb(0,102,102)">6ff87c4664981e4397625791c8ea3bbb5f2279a3</span><span class="pln"> </span><span class="lit" style="color:rgb(0,102,102)">0</span><span class="pln"> COPYING</span></div><div><span class="pln">100644 a37b2152bd26be2c2289e1f57a292534a51a93c7 </span><span class="lit" style="color:rgb(0,102,102)">0</span><span class="pln"> </span><span class="typ" style="color:rgb(102,0,102)">Documentation</span><span class="pun" style="color:rgb(102,102,0)">/.</span><span class="pln">gitignore</span></div><div><span class="pln">100644 fbefe9a45b00a54b58d94d06eca48b03d40a50e0 </span><span class="lit" style="color:rgb(0,102,102)">0</span><span class="pln"> </span><span class="typ" style="color:rgb(102,0,102)">Documentation</span><span class="pun" style="color:rgb(102,102,0)">/</span><span class="typ" style="color:rgb(102,0,102)">Makefile</span></div><div><span class="pun" style="color:rgb(102,102,0)">...</span></div><div><span class="lit" style="color:rgb(0,102,102)">100644</span><span class="pln"> </span><span class="lit" style="color:rgb(0,102,102)">2511aef8d89ab52be5ec6a5e46236b4b6bcd07ea</span><span class="pln"> </span><span class="lit" style="color:rgb(0,102,102)">0</span><span class="pln"> xdiff</span><span class="pun" style="color:rgb(102,102,0)">/</span><span class="pln">xtypes</span><span class="pun" style="color:rgb(102,102,0)">.</span><span class="pln">h</span></div><div><span class="pln">100644 </span><span class="lit" style="color:rgb(0,102,102)">2ade97b2574a9f77e7ae4002a4e07a6a38e46d07</span><span class="pln"> </span><span class="lit" style="color:rgb(0,102,102)">0</span><span class="pln"> xdiff</span><span class="pun" style="color:rgb(102,102,0)">/</span><span class="pln">xutils</span><span class="pun" style="color:rgb(102,102,0)">.</span><span class="pln">c</span></div><div><span class="pln">100644 d5de8292e05e7c36c4b68857c1cf9855e3d2f70a </span><span class="lit" style="color:rgb(0,102,102)">0</span><span class="pln"> xdiff</span><span class="pun" style="color:rgb(102,102,0)">/</span><span class="pln">xutils</span><span class="pun" style="color:rgb(102,102,0)">.</span><span class="pln">h</span></div><p style="margin-top:0px; margin-bottom:10px; padding-top:0px; padding-bottom:0px"></p>
请注意, 在一些旧的文档中, 索引可能被称为"当前目录缓存(current directory cache)"或者"缓存(cache)".
索引(index)有三个重要的属性:
1、索引存储了生成一个(独一无二的)树对象所需要的所有信息.
例如, 运行git commit会从索引中生成一个树对象, 把这个树对象存储在对象数据库(object database)中, 然后把它与这个提交关联起来. (译注: 回忆"查看Git对象"一章, 每一个提交都对应一个树对象.)
2、索引使得对索引生成的树对象和工作树进行快速比较成为可能.
索引通过存储每个对象的一些额外信息(比如说最后修改时间)来完成这个工作. 这些数据没有在上面显示出来, 也没有存储在创建出来的树对象中, 但是它们可以用于快速找出当时工作目录中的文件与索引的差异, 从而让Git不必将文件的内容全部读出.
3、索引可以有效地表示树对象合并时的冲突信息, 使得每一个路径名都有足够的信息与树对象联系起来, 从而可以对它们进行三路合并.
在合并期间, 索引可能存储一个文件的多个版本(称为"stages"). 上面git ls-files的第三栏输出就是stage号. 在出现合并冲突时, 这个号码会是其他值, 而不是0.
因此索引实际上是一种暂存区域(temporary staging area), 它装载了你正在使用的树对象.
0 0
- Git索引
- Git索引
- Git索引
- 【Git Notes】 置顶索引
- Git命令索引
- Git/Github 资料索引
- Git 教程索引
- git 删除 remote branch索引
- GIT - 基本概念(对象,索引,提交)
- [置顶] 【Git 学习笔记】 置顶索引
- Git 索引文件(index file)
- 《Git相关文章索引(1)》
- 三分钟教你学Git(二)之命令索引
- GIT中索引文件(index file)的作用
- git原理与实践知识索引——持续更新
- Git深入体验之旅(索引篇)
- GIT第三讲的四种文件状态和索引
- GIT第三讲 四种文件状态和索引
- JVM(1)--java内存模型
- hibernate中的乐观锁和悲观锁
- python4.3笔记汇总(图片上不去啊)
- 贪心算法—— hdu 2037 今年暑假不AC
- 触发器
- Git索引
- 一滴水推醒了英雄的春天
- 愿时光待你温暖如初
- 相反数
- php中json数据接口创建及调用
- 错误 1 error C2440: “=”: 无法从“const char [11]”转换为“LPCWSTR”
- 山东省第二届ACM大学生程序设计竞赛:Identifiers
- 機器學習基石(Machine Learning Foundations) 机器学习基石 作业三 课后习题解答
- PHP中的语言结构详解