git 说 "fatal: confused by unstable object source data"

标签 git

只是为了好玩,我试图将大约 85GB 的二进制文件放入 git 中,其中大部分大约 6MB。 Git 运行了一段时间,但总是在中途失败,并显示消息“fatal: confused by unstable object source data”,然后是 SHA1。你知道为什么吗?有什么办法可以解决吗?

最佳答案

要么

  • 一个或多个文件在您的操作过程中被修改,或者
  • 某些原因导致读取不一致(例如硬件故障)。

简短版本:Git 的开发人员并不打算将其用于 volatile 文件。

由于 Git 用于“松散对象”的布局* 和它假定的有限文件系统语义**,Git 必须知道第一个字节(两个十六进制新对象的对象名称 (SHA-1) 的字符),然后才能开始存储该对象。

<支持>* objects/[0-9a-f][0-9a-f]/ 目录。参见 gitrepository-layout .
<支持>** 具体来说,它需要能够进行“原子”文件重命名。某些文件系统(通常是网络文件系统;特别是 AFS,我相信)仅当重命名的源和目标位于同一目录中时才保证重命名原子性。

目前,Git 对每个 文件进行两次 SHA-1 传递。第一遍用于检查 Git 是否已经知道文件的内容(其 SHA-1 对象名称是否已存在于对象存储中)。如果对象已经存在,则不会进行第二遍。

对于新内容(对象不在对象存储中),在压缩和计算被压缩数据的 SHA-1 时第二次读取文件。压缩数据被写入一个临时文件,如果初始 SHA-1(“已存储?”检查)与后来的 SHA-1(被压缩和写入的数据的哈希值)匹配,则该临时文件仅重命名为其最终松散对象名称.如果这些 SHA-1 哈希值不匹配,那么 Git 会显示您看到的错误消息并中止。此错误检查已添加到 748af44c63 中在 Git 1.7.0.2 中首次发布。

关于git 说 "fatal: confused by unstable object source data",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4423827/

相关文章:

git - git rebase没有应用提交

git - 删除了对密码身份验证的支持。请改用个人访问 token

android - 混帐 : How to Push missing branches from one repo to another repo

git - 比较 IntelliJ Idea 中未暂存或未提交的更改

git - 如何持续部署 : VisualStudio. com 的 tfs Git -> Heroku

Visual Studio 中的 Git Hook ?

git - 在 Linux 上通过 ssh 访问 bitbucket.org

Git Svn dcommit 错误 - 重新启动提交

git - 备份 git repos,git fetch 与 git remote update

git - 在 git 中跟踪 sqlite3 二进制文件的正确方法?