Git索引究竟包含什么,以及我可以使用什么命令来查看索引的内容?
更新
谢谢你的所有答案.我知道索引充当临时区域,提交的内容是索引而不是工作树.我只是对索引对象的内容感到好奇.我想它可能是文件名/目录名列表,SHA-1对,也许是一种虚拟树?
在Git术语中,是否有任何可用于列出索引内容的管道命令?
存储在树对象git ls-tree
中的SHA1哈希值(由返回的sha1sum
)与文件内容的SHA1哈希值不匹配(由返回)
$ git cat-file blob 4716ca912495c805b94a88ef6dc3fb4aff46bf3c | sha1sum
de20247992af0f949ae8df4fa9a37e4a03d7063e -
Run Code Online (Sandbox Code Playgroud)
git如何计算文件哈希值?它是否在计算哈希值之前压缩内容?
我正在寻找DEFLATE算法的命令行包装器.
我有一个使用DEFLATE压缩的文件(git blob),我想解压缩它.gzip命令似乎没有直接使用DEFLATE算法的选项,而不是gzip格式.
理想情况下,我正在寻找可以做到这一点的标准Unix/Linux工具.
编辑:这是我尝试使用gzip解决我的问题时得到的输出:
$ cat .git/objects/c0/fb67ab3fda7909000da003f4b2ce50a53f43e7 | gunzip
gzip: stdin: not in gzip format
Run Code Online (Sandbox Code Playgroud) Git使用增量压缩来存储彼此相似的对象.
此算法是否已标准化并在其他工具中使用?是否有描述格式的文档?它与xdelta/VCDIFF/RFC 3284兼容吗?
在我们托管的一些问题之后,我们决定将我们的Git存储库移动到GitHub.所以我克隆了存储库并尝试将其推送到GitHub.但是,我偶然发现了一些我们以前从未遇到过的错误:
C:\repositories\appName [master]> git push -u origin master
Counting objects: 54483, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (18430/18430), done.
error: object 9eac1e639bbf890f4d1d52e04c32d72d5c29082e:contains duplicate file entries
fatal: Error in object
fatal: sha1 file '<stdout>' write error: Invalid arguments
error: failed to push some refs to 'ssh://git@github.com/User/Project.git'
Run Code Online (Sandbox Code Playgroud)
当我跑fsck
:
C:\repositories\appName [master]> git fsck --full
Checking object directories: 100% (256/256), done.
error in tree 0db4b3eb0e0b9e3ee41842229cdc058f01cd9c32: contains duplicate file entries
error in tree 9eac1e639bbf890f4d1d52e04c32d72d5c29082e: contains duplicate file entries …
Run Code Online (Sandbox Code Playgroud) 我对Git包文件格式的理解如下:
表是32位宽,前三个32位字是包文件头.最后一行32位是条目的前4个字节.据我所知,条目的大小由MSB集的连续字节指定,后跟压缩数据.
在没有设置MSB的第一个字节中,是压缩数据的MSB部分,还是间隙?如果它是压缩数据的一部分,那么如何保证压缩数据时该位不会被设置?
git ×6
binary-diff ×1
blob ×1
checksum ×1
compression ×1
deflate ×1
duplicates ×1
file-format ×1
git-hash ×1
hash ×1
internal ×1
object ×1
sha1 ×1
vcdiff ×1