【问题标题】:Find total size of uncommitted or untracked files in git在 git 中查找未提交或未跟踪文件的总大小
【发布时间】:2014-03-16 23:16:40
【问题描述】:

我有一大堆可怕的代码,我正在版本控制中设置它。

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

需要总大小,也可以按文件夹细分。

然后我将使用它来建立我的忽略,以便在我将它推高之前将 repo 设置为实际大小

【问题讨论】:

    标签: linux git bash


    【解决方案1】:

    从 2.11 版本开始,git 提供了方便的"count-objects" command

    git count-objects -H
    

    如果这还不够,我会推荐来自 github 的 git-sizer: https://github.com/github/git-sizer

    git-sizer --verbose
    

    详细用法在这里:https://github.com/github/git-sizer/#usage

    【讨论】:

      【解决方案2】:

      我使用了它的修改版本,因为我的文件中有空格,导致它崩溃。我也不确定大小计算并删除了无用的head

      git status --porcelain | sed 's/^...//;s/^"//;s/"$//' | while read path; do
          du -bs "$path" ;
      done | sort -n | awk ' {tot = tot+$1; print } END { printf("%.2fMB\n",tot/(1024*1024)) }'
      

      我更喜欢使用while,因为它比for 稍微安全一些:它仍然可以对包含换行符的文件做一些讨厌的事情,所以我希望有一个可以传递null-separate files 但仍然能够grep 的状态,但我找不到一个好的方法。

      【讨论】:

        【解决方案3】:

        我通过添加一个简单的 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)) }' 
        

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

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

        【讨论】:

          【解决方案4】:

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

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

          但是,我愿意接受任何更好的想法或有用的技巧。我目前的输出是 13GB :)


          上面的命令基本上就在那里,它从 git status 逐行给我总和,但没有给我总和。我目前正在最后得到所有文件的总数,这是不正确的。我尝试了一些 bc 的使用,但无法让它工作

          【讨论】:

            【解决方案5】:

            由于您只是添加所有内容,因此我认为没有任何理由使用 Git。只需使用普通的 Unix 工具:du, find, &c。

            【讨论】:

            • 原因是我会忽略一些事情然后运行这个命令来看看我把它归结为什么
            猜你喜欢
            • 2017-12-30
            • 1970-01-01
            • 1970-01-01
            • 2017-03-15
            • 2019-07-21
            • 2017-10-04
            • 2016-02-04
            • 2021-03-17
            • 2016-12-26
            相关资源
            最近更新 更多