簡體   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