为什么 Git 使用*压缩*对象的 SHA1 而不是原始对象的 SHA1?

2023-12-26

我只是好奇为什么做出这个选择 - 它基本上排除了更改 Git 使用的压缩算法 - 因为它不使用原始 blob 的 SHA1。也许这里有一些效率方面的考虑。也许 ZLIB 压缩文件的速度比 SHA1 算法创建哈希的速度更快,因此在哈希之前压缩会更快吗?

以下是 Linus 的原始 Git README 链接:

  • 根/自述文件 http://git.kernel.org/?p=git/git.git;a=blob;f=README;h=27577f76849c09d3405397244eb3d8ae1d11b0f3;hb=e83c5163316f89bfbde7d9ab23ca2e25604af290

这是相关段落:

“内容可寻址中有几种对象 采集数据库。他们都用zlib放气了,然后开始 带有其类型的标签以及有关数据的大小信息。 SHA1 哈希值始终是压缩的对象,而不是 原版的。”


正如你所说,它是originalREADME,Git 启动时的情况。从那时起,它已被更改,以便在压缩之前计算 SHA1。

值得注意的是,用于命名对象的 SHA-1 哈希值 是原始数据加上此标头的哈希值,因此“sha1sum”文件 与文件的对象名称不匹配。 (历史记录:黎明时分 在 git 时代,哈希值是压缩对象的 SHA-1。)

http://schacon.github.com/git/user-manual.html#object-details http://schacon.github.com/git/user-manual.html#object-details

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么 Git 使用*压缩*对象的 SHA1 而不是原始对象的 SHA1? 的相关文章

  • 十六进制字符串的运行长度编码(包括换行符)

    我正在使用以下方法实现游程长度编码GZipStreamC winforms 应用程序中的类 数据以一系列由换行符分隔的字符串形式提供 如下所示 FFFFFFFF FFFFFEFF FDFFFFFF 00FFFFFF 在压缩之前 我将字符串转
  • `git ls-files -s` 输出中不同字段的含义是什么?

    在 Git 中 命令返回的典型结果行git ls files s好像 100755 be2c2e9b0966253096472d4b482c458bc892e493 0 gitignore 这些字段是什么意思 不用再犹豫了git ls fi
  • git 匹配多个单词的标签

    我们可以得到最后一个 git 标签 它以一个单词 例如 TEST 开头 如下所示 git describe tag dirty match TEST 我想知道如何获得最后一个以 word1 开头的标签orword2 例如测试OR跑步 我尝试
  • .gitconfig 别名函数调用

    我在 gitconfig 中定义了以下别名 alias teamcity tc tc是我在我的中定义的一个shell函数 bashrc文件 由于某种原因 我收到以下错误 aafghani 03 git workday amirafghani
  • VS 2015 + Bower:在防火墙后面不起作用

    Problem 在 Visual Studio 2015 中 使用 Bower 我的包在防火墙后面时恢复失败 并出现类似以下内容的错误 ECMDERR 无法执行 git ls remote tags heads git github com
  • 如何将工作树与提交进行比较?

    我在用着 git diff mycommit 用于比较我的工作树mycommit 但它似乎忽略当前索引中不存在的文件 您可以按如下方式重现它 git init echo A gt A txt git add git commit m A g
  • git 提交错误:检测到大文件

    您好 我正在为 ios 8 1 开发一个应用程序 xcode 我已经使用 googleMaps 框架来实现自动完成功能 当我尝试在 Git 中推送我的项目时 我收到大文件检测错误 后来尝试使用 git lfs 并跟踪 git 检测到的文件
  • iPhone 和加密库

    我想我必须在我的 iPhone 应用程序中使用加密库 我想问你有关苹果公司实施的加密货币出口政策的影响 我需要做一些额外的事情吗 例如填写表格等 1 如果我使用 MD5 进行哈希处理 2 如果我使用对称加密 Thanks EDIT 2009
  • 当当前分支上有未提交的更改时签出另一个分支

    大多数时候 当我尝试签出另一个现有分支时 如果我在当前分支上有一些未提交的更改 Git 会不允许我这样做 所以我必须首先提交或隐藏这些更改 然而 有时 Git 确实允许我在不提交或存储这些更改的情况下签出另一个分支 并且它会将这些更改携带到
  • 比较 ruby​​ 哈希值[重复]

    这个问题在这里已经有答案了 可能的重复 如何比较两个哈希值 https stackoverflow com questions 4928789 how do i compare two hashes 我有两个 ruby 哈希值 本质上是模型
  • 为所有子文件夹设置 git 配置值

    我知道可以设置每个存储库的配置来覆盖用户级配置 即 path to my repo gitconfig覆盖 gitconfig 是否可以设置 git 配置来覆盖给定文件夹的所有子文件夹的用户级设置 即 我有 topLevelFolder1
  • Android 存储库初始化失败

    我想我非常仔细地遵循该网站的说明 http source android com source downloading html http source android com source downloading html 但是当我尝试这
  • .net 中的 deflate、gzip 和 zlib 的一个库

    首先 我们来定义一些容易混淆的术语 deflate compression algorithm zlib header deflate trailer gzip header deflate trailer 我正在寻找一个基本上可以让我执行
  • Git 更改丢失 - 为什么?

    我们的开发团队正在使用 git 最近我们至少两次丢失了文件更改 我们正在使用私人 Github 存储库 在当前情况下 我们可以返回 Github 上的日志并查看我对文件所做的一些更新 后来 另一位团队成员更改了文件的不同部分 它似乎破坏了我
  • `git push` -- 没有输出,什么也没有发生

    touch test git add test git commit m test git push u origin master 这奏效了 该文件已上传到存储库 rm test cp R website website git rm t
  • Git:从 master 以外的分支克隆

    我正在尝试从 Github 的存储库中提取数据 但我不想克隆主分支 我想克隆其他一些分支 当我尝试时git clone
  • 如何减少 Bitbucket 上的 git repo 大小?

    我的问题摘要 在我向两个现有文件添加了几百个字节后 我在 Bitbucket 上的一个私人存储库的大小突然增加了一倍多 该存储库现在超过 2GB 这导致 Bitbucket 将其置于只读模式 因为它处于只读模式 所以我无法推送会减少存储库大
  • Eclipse Git 关键字扩展

    每次我检查 git hub 服务器的源代码时 我都需要更新源代码修订关键字 version date 等 你可能知道 Git 中的主要问题是你无法使用以下命令修改文件 提交后有关提交的信息 因为 Git 首先对文件进行校验 基本上我想要实现
  • git 是否有任何静态接口?

    我一直在寻找一个宁静的 git api 但似乎没有找到 我得到的最接近的是 Github 的 api 来访问一些存储库信息 还有其他的实施吗 Orion Git API http wiki eclipse org Orion Server
  • git 2.32 git push -u origin master 没有任何反应

    I ve starting to use git github and I m stucked on how to push my codes to github I m following some tutorials and when

随机推荐

  • 如何将现有的nodejs服务器应用程序连接到Azure SQL数据库

    任何人都可以请建议 我有一个在 azure 上运行的现有 Nodejs 服务器 在 Linux 上运行节点 10 14 项目代码位于 github 上 当我推送更改时 它们会自动推送到 azure 我已经通过Azure门户设置了数据库服务器
  • 为什么 Facebook 淹没了我的网站?

    每个半小时我都会收到大量的请求http www facebook com externalhit uatext php http www facebook com externalhit uatext php 我知道这些请求意味着什么 但这
  • Django url 调试器

    我正在开发一个 Django 应用程序 随着时间的推移 URL 不断增长 我现在有很多这样的视图 由于我做了一些改变 一个视图开始出现故障 当我尝试获取时http example com foo edit profile http exam
  • 将 C 字符串转换为二进制表示形式

    在 ANSI C 中 我们如何将字符串转换为二进制字节数组 所有的谷歌搜索和搜索都给了我 C 和其他而不是 C 的答案 我的一个想法是将字符串转换为 ASCII 然后将每个 ASCII 值转换为其二进制 呃 我知道这是最愚蠢的想法 但我不确
  • React-Native-Video -> 如何保存视频

    我目前正在使用react native video 并通过该包播放HLS 视频流 有人知道如何将视频下载到手机图库吗 查看该包没有任何方法 并且想知道是否还有另一个包可以使用 Thanks 在我的应用程序中 我使用以下命令下载视频RNFS
  • Azure 中的 Web 应用服务每天重新启动多次,日志中没有错误

    我正在 Azure Web 应用服务中运行 ASP Net Web API 2 应用程序 Web 服务每天会重新启动多次 5 6 次 而不会提前发出任何通知或错误消息 我扩展到两个实例 始终不依赖于负载 并且两个实例同时重新启动 我确实设置
  • Sql 服务器表分区 - 我可以跨服务器分配表吗?

    我读过很多网站 指南等 另请注意 我无法测试我所要求的内容 因为没有两台计算机 表分区简单地意味着表被逻辑划分 这样特定范围仅由特定分区处理 从而减少负载并允许并行性 提到分区位于不同的硬盘上 但从未提到分区位于不同的计算机上 那可能吗 例
  • 每行具有不同标准差的 Numpy 数组

    我想要一个NxM矩阵 其中每行中的数字是从不同正态分布生成的随机样本 相同mean但标准差不同 以下代码有效 import numpy as np mean 0 0 same mean stds 1 0 2 0 3 0 different
  • Kendo UI 中单击自定义工具栏时如何调用函数?

    我想创建一个自定义工具栏 这是我的代码 toolbar text Go to Add User Page className k grid custom imageClass k add function createUser alert
  • 不包括程序集版本的 WCF 扩展

    正如所讨论的here http marcgravell blogspot com 2009 11 controlling wcf protobuf net at html 我正在尝试添加 WCF 端点扩展 我已经让它工作了 但我需要包含完整
  • 哪个是支持代码重新加载的简约 python wsgi 开发服务器? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 据我所知 wsgiref 无需重新加载代码 CherryPy 不仅仅是服务器 mod wsgi 所有 apache 开销 Paste https
  • 在 StreamBuilder 中使用选择器(提供程序)时重建不必要的小部件

    我正在使用一个Selector当 Bloc 中的数据发生更改时会重建 这很好 但是当数据发生变化时 它会重新加载整个树 而不仅仅是选择器内的构建器 就我而言 选择器位于 StreamBuilder 内 我需要这个 因为流已连接到 API 因
  • Pandas DataFrame 按两列分组并获取第一个和最后一个

    我有一个DataFrame喜欢跟随 df pd DataFrame id 1 1 2 3 2 value a b a a c Time 6 Nov 2012 23 59 59 0600 6 Nov 2012 00 00 05 0600 7
  • zend框架丢失会话

    我正在尝试在我的 Zend 框架应用程序中实现 Flash 上传器 但我在会话中遇到问题 Flash 不发送任何 cookie 标头 这就是会话丢失的原因 我试图将 sessionId 作为 post 参数发送 并在我的引导文件中添加了 s
  • 从 File.ReadAllBytes (byte[]) 中删除字节顺序标记

    我有一个 HTTPHandler 它正在读取一组 CSS 文件并将它们组合起来 然后对它们进行 GZipping 但是 某些 CSS 文件包含字节顺序标记 由于 TFS 2005 自动合并中的错误 并且在 FireFox 中 BOM 被作为
  • 如何使用点绘制 pandas 数据框的两列

    我有一个 pandas 数据框 想要绘制一列中的值与另一列中的值 幸运的是 有plot与数据帧关联的方法似乎可以满足我的需要 df plot x col name 1 y col name 2 不幸的是 它看起来像在情节风格中 列出here
  • 如何在 Pyspark 中添加带有 min 和 max 函数的新列并按数据分组?

    PySpark 数据框 adobeDF 将新列添加到数据框 from pyspark sql window import Window from pyspark sql import functions as f adobeDF new a
  • DrRacket 中的宏步进器

    在链接上http www ccs neu edu home ryanc macro stepper tutorial html http www ccs neu edu home ryanc macro stepper tutorial h
  • git 删除文件最旧的修订版本

    我有一个 33 MB 的大文件 我想永久删除该文件的最旧版本 因此我只保留最新的 X 版本 怎么做 我的裸存储库因此变得巨大 我已尝试以下操作 但它完全删除了该文件 git filter branch index filter git rm
  • 为什么 Git 使用*压缩*对象的 SHA1 而不是原始对象的 SHA1?

    我只是好奇为什么做出这个选择 它基本上排除了更改 Git 使用的压缩算法 因为它不使用原始 blob 的 SHA1 也许这里有一些效率方面的考虑 也许 ZLIB 压缩文件的速度比 SHA1 算法创建哈希的速度更快 因此在哈希之前压缩会更快吗