为什么git索引文件是二进制的?

J

我的Git目录中的大多数文件都是纯文本文件(压缩的松散对象和packfile除外)。因此,我可以只整理和编辑文件,例如.git/HEAD或,.git/refs/heads/master然后检查存储库是否损坏。

但是.git/index是二进制文件。纯文本文件不会更有用,因为它可以很容易地手动修改?

斯科特·查孔(Scott Chacon)在演示中显示了以下图像(幻灯片278):斯科特·查孔(Scott Chacon)索引

我认为,可以轻松地将其放入纯文本文件中。

那么为什么它是二进制文件而不是纯文本文件?

如“ git索引到底包含什么? ”中所示该索引包含元数据,并且如下面Jazimov指出那样引用了

  • 索引条目:对条目的引用,带有元数据(时间,模式,大小,SHA1等)
  • 引用树的“ cached trees ”(“可以从索引派生的树的预先计算哈希”),这有助于加快从树索引生成新提交的速度。

这些数据的串联使其成为二进制文件,尽管实际原因是纯粹的推测。一个人不能手动修改它。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

几乎所有的Java二进制文件为什么有相同的大小

为什么rustc没有将libmariadb包含在发行二进制文件中?

为什么无法在二进制文件中找到int值

为什么我不能将二进制文件的输出重定向到文件?

为什么我的文本文件比二进制文件大?

为什么git认为我的.sql文件是二进制文件?

为什么Git将此文本文件视为二进制文件?

g ++为什么不必链接iostream二进制文件,但对于pthread呢?

为什么可执行二进制文件包含包含的头文件的路径?

为什么GCC根据文件创建共享对象而不是可执行二进制文件?

为什么“ git status”在二进制文件未修改且文件模式相同时显示修改后的二进制文件

cat为什么更改二进制文件的内容?

为什么在版本控制系统中将.pbxproj文件视为二进制文件?

为什么`cargo new`创建二进制文件而不是库文件?

为什么二进制文件不是文本文件,而所有文本文件都是二进制文件?

为什么加载的PE二进制文件需要IAT?

为什么git add --patch无法与二进制文件的git add -N一起使用?

为什么二进制数据文件比数据大?

为什么写此二进制文件会切断文件的结尾?

为什么“二进制文件”不在原始二进制文件中?

为什么cmake的安装文件与实际构建的二进制文件不同?

可以在CCC配置文件中使用sh(或索引文件)代替二进制文件吗?

为什么某些Linux二进制文件需要重新编译?

为什么二进制搜索索引以这种方式计算?

为什么我的系统只在 /snap 中查找二进制文件?

为什么忽略二进制文件是最佳做法?

为什么 git 会阻止合并二进制文件?

为什么使用 git 从 powershell 复制的二进制文件与原始文件不同?

为什么 `go run` 不留下生成的二进制文件而不是删除它?