在git中查找未提交或未跟踪文件的总大小

edm*_*rce 11 linux git bash

我有一大堆可怕的代码,我在版本控制中进行设置.

我想要一个可以在Linux上运行的命令,以便为我提供在运行时提交和推送的文件的总大小 git add -A && git commit -am 'initial commit'

需要总大小,按文件夹分解也很方便.

然后我将使用它来构建我的忽略,以便在我推升之前我可以将repo变为现实大小

edm*_*rce 9

我想我已经回答了我自己的问题:

for f in `git status --porcelain | sed 's#^...##'`; do du -cs $f | head -n 1; done | sort -nr;  echo "TOTAL:"; du -cs .
Run Code Online (Sandbox Code Playgroud)

但是我对任何更好的想法或有用的技巧持开放态度.我目前的输出是13GB :)


上面的命令基本上就是那里,它从git状态给出了我的总线,但没有给我总和.我目前正在获取最终所有文件的总数,这是不正确的.我尝试过使用bc但无法使用它


Lud*_*udo 5

我通过添加一个简单的 awk 语句来调整 edmondscommerce 的答案,该语句对 for 循环的输出求和并打印总和(除以 1024*1024 以转换为 Mb)

for f in `git status --porcelain | sed 's#^...##'`; do du -cs $f | head -n 1; done | sort -nr  | awk ' {tot = tot+$1; print } END{ printf("%.2fMb\n",tot/(1024*1024)) }' 
Run Code Online (Sandbox Code Playgroud)

请注意,--porcelain 打印相对于 git 存储库根目录的路径名。因此,如果您在子目录中执行此操作,则 du 语句将无法找到这些文件。

(whoppa;我在 SoF 中的第一个答案,愿力与它同在)