多分支添加文件对Git仓库大小的影响咨询
Git 仓库重复文件存储机制答疑
关于二进制文件的存储问题
- 不管在多少个分支添加完全相同的3.14MB二进制文件,Git都会识别到内容一致,生成同一个哈希值(SHA-1)。
- Git的底层存储是基于内容哈希的blob对象,只要内容完全匹配,就只会在仓库里存储一份该文件的对象。所以仓库大小只会增长约3.14MB,而非5×3.14MB。各分支的提交只会复用这个已存在的blob对象,不会重复存储。
关于文本文件的存储情况
完全相同的文本副本
和二进制文件逻辑一致:只要文本内容完全相同(包括换行、空格等所有细节),不管添加到哪个旧分支,Git都会生成同一个blob哈希,仓库里只会保留一份文件数据,不会重复占用空间。
略有修改的文本文件
只要文本内容有任何细微变化(哪怕是一个空格、一个字符的修改),文件的哈希值就会完全不同,Git会为这个修改后的版本生成一个全新的blob对象。此时每个修改后的版本都会单独占用存储空间,仓库大小会对应增加每个版本的文件大小(Git会自动对对象进行压缩,但本质上每个不同版本都是独立存储的)。
内容的提问来源于stack exchange,提问作者matth
相关产品推荐
相关产品推荐

