代码之家  ›  专栏  ›  技术社区  ›  Martin Thoma

我可以让“git status”显示未跟踪文件的文件大小吗?

git
  •  1
  • Martin Thoma  · 技术社区  · 7 年前

    有没有可能配置git来显示它?

    0 回复  |  直到 7 年前
        1
  •  4
  •   torek    7 年前

    不,你做不到 git status 就这么做吧。

    需要 使 这样做,因为你可以写你的

    git -C "$(git rev-parse --show-cdup)" ls-files --other --exclude-standard
    

    获取文件列表。然后可以使用任何命令查看这些文件的统计信息。您可能希望在之后立即运行此命令 git状态 git状态 抑制自己的列表 --untracked-files=no . 例如:

    alias st='git status -uno;
      git -C "$(git rev-parse --show-cdup)" ls-files --others --exclude-standard -z | 
      xargs -0 ls -lR'
    

    这是我用过的 -z xargs -0 ls -l ,可以处理,并表示为 别名而不是 别名。

    这里有个缺陷。而 git状态 -uall 将枚举目录中所有未跟踪的文件, git ls-files --others 不会:它的行为类似于默认值 git状态 ls -l 这里将显示目录中的文件;要停止此操作,请使用 ls -ld

    (要获取修改过的文件,请使用 git ls-files -m --others .)

        2
  •  3
  •   Rian Rizvi    6 年前
    git status --porcelain | awk '{print $2}' | xargs ls -hs | sort -h
    
    1. The git status --porcelain 将显示已更改的文件。
    $ git status
    ?? IMG_20160813_205506_AO_HDR.jpg
    ?? IMG_20160813_205539_AO_HDR.jpg
    ?? IMG_20160813_211139_HDR.jpg
    ?? IMG_20160814_143649_HDR.jpg
    
    1. awk '{print $2}' ??
    2. 最后是 ls -hs 将以可读格式显示每个文件的大小。以及 sort -h 将按大小排序。

    样本输出:

    $ git status --porcelain | awk '{print $2}' | xargs ls -hs | sort -h
    136 IMG_20160813_205506_AO_HDR.jpg
    384 IMG_20160813_205539_AO_HDR.jpg
    784 IMG_20160813_211139_HDR.jpg
    5667898 IMG_20160814_143649_HDR.jpg
    
        3
  •  0
  •   Patrick J. Holt    5 年前

    gst 以获得具有文件大小信息的漂亮格式输出

    alias gst="git_status_size"
    git_status_size(){
        git status --porcelain | awk '{print $2}' | xargs ls -hl | sort -r -h | awk '{print $5 "\t" $9}'
    }
    

    $ gst
    287MB   video.mp4
    53B     README.md
    33B     222.txt
    18B     333.txt
    6B      111.txt