假设情况: 我有一个git存储库,我有索引,HEAD,refs,packed-refs等。 我不知道.git / objects / pack
中包文件的名称git如何找出包文件的名称?有没有办法从索引文件中计算包文件的名称?
更新: .git / objects / info / packs是我最接近我正在寻找的东西。但是这个文件并不总是存在。
答案 0 :(得分:4)
作为一般规则,git只读取objects/pack
目录的内容:它不知道包文件SHA-1值的先验。但是,当它创建一个 new 包文件时,它会计算一个SHA-1并将其用作包文件的名称;并且索引的名称必须与pack-file的名称相同,所以如果
objects/pack/pack-1713881825f0238230418a7f843a8c9af9b70eea.pack
存在,然后
objects/pack/pack-1713881825f0238230418a7f843a8c9af9b70eea.idx
例如,也应该存在(通过查看目录找到这些名称,对这些SHA-1没有特别的意义)。
可能还有.keep
和.bitmap
个文件对应于任何给定的SHA-1(位图在git 2.0.0中似乎是新的)。
有关包文件的更有趣的启示,请参阅
Documentation/technical/pack-heuristics.txt