git几个重要的概念
发布网友
发布时间:2022-04-24 14:32
我来回答
共1个回答
热心网友
时间:2023-08-05 14:20
<> hash.
进入.git/objects/中就能看到一大堆的16进制字符组成的文件名. 所有的代码, 所有的目录, 所有的分支, 所有的变更历史... 所有的和代码相关的信息都在这些文件里. 这些Objects有3类: Blob, Tree, Commit. 所有存储到objects下的文件都会被计算SHA1值, 然后以该SHA1值作为文件名, 而它原来的文件名则存放在下面要说到"Tree"里面.
<> Blob
BLOB用来存储常规文件. 这个概念很简单, 把一个文件拷贝到object目录下, 重命名, 新的名字就是它的SHA1值. 需要注意是: 当一个文件的内容修改了, 它会以一个新的SHA1名字, 整个的重新存储到git库中, 而不单单是修改了部分. 这是git一个重要的特征, 虽然会带来一些存储上的浪费, 但是换来的很多其他方面的好处.
<> Tree
Tree用来表示目录, 存储的是一个 "文件名<-->SHA1文件名" 的列表. 根据上面的规则可以推出以下的重要结论:
* 只要某个文件/目录发生了变化, 所有的上级目录的Tree都要变化.
* 一个顶级目录的Tree, 代表了一个代码库的版本.