文章目录
介绍
我有个仓库创建了好几个分支,而且分支后,内容差异很大。
后续为了方便统计各分支的大小,去做了个统计。
shell
git branch --format='%(refname:short)' | while read branch; do
size=$(git ls-tree -r "$branch" --long | awk '{sum += $4} END {print sum/1024/1024 " MB"}')
echo "$branch: $size"
done
对于一些利用分支来做版本管理的仓库来说,统计分支的大小有一定意义的(如果只是做一个bug修复,或者是新功能的开发,之后会迅速合并,这个统计的意义就不大)。
部分分解
1.列举所有分支
shell
$ git branch
* main
master
2.统计某个分支的大小
首先是查看分支中有哪些文件,--long的第4列是文件大小
shell
$ git ls-tree -r main --long
100644 blob 78acfd6df37e39b962704b4a878947eb90b544c7 32 .gitignore
100644 blob 556dc0228db4f8ce6fa3fd241bd78109315e4505 1073 LICENSE.txt
100644 blob 55bb6c725f2b3f655b01eb953c6593ea1d003a51 944 README.md
然后按照第4列的大小求和一下
shell
$ git ls-tree -r main --long | awk '{sum += $4} END {print sum/1024/1024 " MB"}'
0.793277 MB
注意事项
- git ls-tree 只统计已经添加到(分支)仓库的文件。
- (结合1)这里不包括gitignore忽略的文件。
- 这里的文件大小是指原文件大小,而不是(添加到仓库)压缩后的文件大小。