繁体   English   中英

如何在git中获取工作副本大小?

[英]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-filesxargs都可以在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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM