只是为了好玩,我试图将大约85GB的大约6MB二进制文件放入git中.Git突然出现了一段时间,但总是失败了一半的消息"致命:被不稳定的对象源数据混淆",然后是SHA1.你知道为什么吗?有没有办法解决它?
Chr*_*sen 23
或
简短版本:Git的开发人员并不打算将其用于易失性文件.
由于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中发布.
| 归档时间: |
|
| 查看次数: |
8967 次 |
| 最近记录: |