【发布时间】:2019-02-14 12:19:22
【问题描述】:
查看未跟踪文件的文件大小对我来说非常方便。并且可能更改文件的旧/新大小。
是否可以配置 git 以显示它?
【问题讨论】:
标签: git
查看未跟踪文件的文件大小对我来说非常方便。并且可能更改文件的旧/新大小。
是否可以配置 git 以显示它?
【问题讨论】:
标签: git
git status --porcelain | awk '{print $2}' | xargs ls -hs | sort -h
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
awk '{print $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
【讨论】:
不,你不能让git status 这样做。
您可能需要让git status 这样做,因为您可以编写自己的自己的命令来代替。使用:
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别名而不是一个Git 别名。
这里有一个缺陷。虽然git status 和-uall 将枚举目录中所有未跟踪的文件,但git ls-files --others 不会:它的行为类似于默认的git status,通过仅打印包含目录名称来汇总此类文件。这里的ls -l 会显示目录中的文件;要阻止这种情况,请改用ls -ld,但当然您不会看到任何文件大小。
(要获取修改后的文件,请使用git ls-files -m 而不是--others。)
【讨论】:
尝试将以下代码添加到您的 .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
【讨论】:
以上所有答案都使用git status --porcelain,它从存储库的根目录返回文件路径。
如果我们想要相对文件路径,最好使用git status -s。我写了下面的命令来只显示存在的文件(删除的文件不能存在)并且可以在任何地方使用。
git status -s | grep -v D.* | awk '{print $2}' | xargs ls -hl | sort -r -h | awk '{print $5 "\t" $9}'
您还可以将以下内容添加到您的 .bashrc 文件中以用作别名。
alias gst="git_status_size"
git_status_size(){
git status -s | grep -v D.* | awk '{print $2}' | xargs ls -hl | sort -r -h | awk '{print $5 "\t" $9}'
}
样本输出
7.8K nnp_replication_attempt_1/scaling.data
7.8K enhanced_sampling_1/scaling.data
5.3K nvt_transfer_H_template.lmp
5.3K ../replication_attempt_1/nvt_stretch_bond.lmp
719 enhanced_sampling_1/z1-ada.sh
【讨论】: