@
chloerei 这涉及pack的很多实现细节,特别是pack本身还对文件作压缩,所以并不是你的两个选项那么简单。
不过我们也可以作个小实验:
~/tmp$ ls
~/tmp$ mkdir test
~/tmp$ cd test
~/tmp/test$ git init
初始化空的 Git 版本库于 /home/jin/tmp/test/.git/
~/tmp/test (master #%)$ dd if=/dev/urandom of=a bs=1 count=1000000
记录了1000000+0 的读入
记录了1000000+0 的写出
1000000字节(1.0 MB)已复制,2.53473 秒,395 kB/秒
~/tmp/test (master #%)$ git add a
~/tmp/test (master #)$ git commit -m 'initial commit'
[master(根提交) 710fdd3] initial commit
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 a
~/tmp/test (master)$ du -csh .git
1.2M .git
1.2M 总用量
~/tmp/test (master)$ dd if=/dev/urandom of=a bs=1 count=500000 oflag=append conv=notrunc
记录了500000+0 的读入
记录了500000+0 的写出
500000字节(500 kB)已复制,1.26773 秒,394 kB/秒
~/tmp/test (master *)$ ls -l a
-rw-r--r-- 1 jin users 1500000 7月 4 18:06 a
~/tmp/test (master *)$ git add a
~/tmp/test (master +)$ git commit -m 'A dash'
[master d47c454] A dash
1 file changed, 0 insertions(+), 0 deletions(-)
~/tmp/test (master)$ du -csh .git
2.6M .git
2.6M 总用量
~/tmp/test (master)$ git gc
对象计数中: 6, 完成.
Delta compression using up to 4 threads.
压缩对象中: 100% (4/4), 完成.
写入对象中: 100% (6/6), 完成.
Total 6 (delta 1), reused 0 (delta 0)
~/tmp/test (master)$ du -csh .git
1.6M .git
1.6M 总用量