这将是非常方便的我看到的文件大小未跟踪的文件。可能还有更改文件的旧/新大小。是否可以配置git以显示它?
alen0pnh1#
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
km0tfn4u2#
尝试将以下代码添加到.bashrc或. zshrc中。然后使用gst获得一个包含文件大小信息的漂亮格式输出。
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
ldfqzlk83#
不,你不能让git status这样做。您可能不需要让git status执行此操作,因为您可以编写自己的命令来执行此操作。用途:
git status
git -C "$(git rev-parse --show-cdup)" ls-files --other --exclude-standard
以获得文件列表。然后,您可以使用任何您喜欢的命令来查看有关这些文件的统计信息。您可能希望在git status之后立即运行此命令,并让git status使用--untracked-files=no抑制它自己的列表。例如:
--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,但当然您不会看到任何文件大小。(To获取修改的文件,使用git ls-files -m而不是--others。)
-z
xargs -0 ls -l
-uall
git ls-files --others
ls -l
ls -ld
git ls-files -m
--others
q0qdq0h24#
以上所有答案都使用git status --porcelain,它返回从存储库根目录开始的文件路径。如果我们需要相对文件路径,使用git status -s将是首选。我已经写了下面的命令,只显示存在的文件(删除的文件不能存在),可以在任何地方使用。
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文件中用作别名。
.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
uqdfh47h5#
这一个为我工作:git status -s . | awk '{print $2}' | xargs ls -s M -S说明
git status -s . | awk '{print $2}' | xargs ls -s M -S
-s: list size using current directory as reference rather than repo root (which is what
.
-s M
ls
-S
sort
5条答案
按热度按时间alen0pnh1#
The git status --porcelain
将显示已更改的文件。awk '{print $2}'
将提取??
之后的内容1.最后,
ls -hs
将以人类可读的格式显示每个文件的大小。sort -h
将按大小对它们进行排序。输出示例:
km0tfn4u2#
尝试将以下代码添加到.bashrc或. zshrc中。然后使用
gst
获得一个包含文件大小信息的漂亮格式输出。输出:
ldfqzlk83#
不,你不能让
git status
这样做。您可能不需要让
git status
执行此操作,因为您可以编写自己的命令来执行此操作。用途:以获得文件列表。然后,您可以使用任何您喜欢的命令来查看有关这些文件的统计信息。您可能希望在
git status
之后立即运行此命令,并让git status
使用--untracked-files=no
抑制它自己的列表。例如:这里我也使用了
-z
,因为我使用的命令xargs -0 ls -l
可以处理这个问题,并将其表示为 shell 别名而不是 Git 别名。这里有一个缺陷。虽然
git status
和-uall
将枚举目录中所有未跟踪的文件,但git ls-files --others
不会:它的行为类似于默认的git status
,通过仅打印包含目录名来汇总这些文件。这里的ls -l
将显示目录中的文件;要阻止这种情况,请使用ls -ld
,但当然您不会看到任何文件大小。(To获取修改的文件,使用
git ls-files -m
而不是--others
。)q0qdq0h24#
以上所有答案都使用
git status --porcelain
,它返回从存储库根目录开始的文件路径。如果我们需要相对文件路径,使用
git status -s
将是首选。我已经写了下面的命令,只显示存在的文件(删除的文件不能存在),可以在任何地方使用。您还可以将以下内容添加到
.bashrc
文件中用作别名。输出示例
uqdfh47h5#
这一个为我工作:
git status -s . | awk '{print $2}' | xargs ls -s M -S
说明
git
-s: list size using current directory as reference rather than repo root (which is what
--瓷`要求)。.
将输出限制为仅当前目录或更低目录中的文件。ls
-s M
:打印大小(MB)。ls
的-S
参数按大小对输出进行排序,从而避免使用sort
。