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

时间:2019-02-14 12:19:22

标签: git

查看未跟踪文件的文件大小对我来说非常方便。也许是更改文件的旧/新大小。

是否可以通过配置git来显示它?

3 个答案:

答案 0 :(得分:2)

不,您不能让git status那样做。

您可能不需要 进行git status的操作,因为您可以编写自己的 own 命令。使用:

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

获取文件列表。然后,您可以使用所需的任何命令来查看有关这些文件的统计信息。您可能要在git status之后立即运行此命令,并让git status禁止使用--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可以处理该问题,并将其表示为 shell 别名而不是< em> Git 别名。

这里有一个缺陷。尽管git status-uall会枚举目录中所有未跟踪的文件,但git ls-files --others不会:它的行为类似于默认的git status,仅通过打印包含以下内容的文件来汇总此类文件目录名称。这里的ls -l将显示目录中的文件;要停止此操作,请改用ls -ld,但是您当然看不到任何文件大小。

(要获取修改的文件,请使用git ls-files -m而不是--others。)

答案 1 :(得分:0)

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将按大小对它们进行排序。

答案 2 :(得分:0)

尝试将以下代码添加到您的.bashrc或.zshrc中。然后使用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