git是通过hash确保数据的完整性的,那么,它不直接存储文件,又是怎么通过hash值反推出文件内容,sha1是不可逆的,这个又是怎么实现的,主要是实现的原理
git是通过hash确保数据的完整性的,那么,它不直接存储文件,又是怎么通过hash值反推出文件内容,sha1是不可逆的,这个又是怎么实现的,主要是实现的原理
通过SHA1作为key查找.git/objects目录下对应的文件,里面保存的就是对应SHA1的内容,只不过里面的内容是经过加密的,实现的细节你可以参考我用node.js实现的git,这里有恢复文件的js实现代码:https://github.com/Geocld/git...
blob对象并没有使用SHA-1进行哈希,序列化时是直接返回了data,然后进行压缩了。
详细可以参考:https://wyag.thb.lt/#org992bfee
class GitBlob(GitObject):
fmt = b'blob'
def serialize(self):
return self.blobdata
def deserialize(self, data):
self.blobdata = data
3 回答2.6k 阅读
1 回答1.3k 阅读✓ 已解决
2 回答1.2k 阅读✓ 已解决
3 回答1.7k 阅读
2 回答1.1k 阅读
1 回答1.1k 阅读
2 回答867 阅读
.git/objects