git是怎么通过一个sha1的哈希值,还原出对应的文件内容

git是通过hash确保数据的完整性的,那么,它不直接存储文件,又是怎么通过hash值反推出文件内容,sha1是不可逆的,这个又是怎么实现的,主要是实现的原理

阅读 8.7k
3 个回答

通过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
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏