[英]How to get the working copy size in git?
我想计算我当前检出的分支在git中的总工作副本大小(仅限版本化文件;未忽略的文件或尚未成为HEAD后代的文件)。 目前我试过这个:
$ git ls-files | du -k | cut -f1 | awk '{total += $1} END {print total}'
然而,这需要花费大量时间并输出一个似乎没有意义的数字:
29800260
我不确定这个数字是多少。 如果有更快或更准确的命令,请告诉我。
你是在正确的道路上,但使用反引号代替管道。
du -k `git ls-files` | awk '{total += $1} END {print total}'
如果您不得不担心空格,那么git ls-files
和xargs
都可以在null中进行通信:
git ls-files -z | xargs -0 du -k | awk '{total += $1} END {print total}'
你花了这么长时间,因为git ls-files |
本质上是一个无操作,和du -k |
是当前目录中每个文件的管道输出。 正是你想要避免的!
请注意, du
显示文件占用的磁盘空间量。 这可能会因文件系统类型和设置而异。 例如,小的1字节文件可以占用4KB的块,或者其内容可以与元数据一起存储。
如果您想要存储库中所有文件的确切字节大小的总和,您可以使用:
git ls-tree -r -l HEAD | cut -d' ' -f 4- | awk '{s+=$1} END {printf "%.0f\n", s}'
这使用存储在Git中的blob大小,也可以在裸存储库上运行。 结果通常小于du
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.