2010-07-01 50 views
36

我想弄清楚如何轻松地计数我未提交的索引中的文件。在暂存索引git计数文件

我已经试过:

git status | grep '#' | wc -l 

,但也有与#不代表更改的文件开始的几行。任何人都有更好的?认为必须有一个标志git status这样做。

即使像GitX这样的工具也不会轻易让您选择暂存的文件/目录,并查看其中有多少。

回答

43

如果你想要的东西的脚本可以使用:

git diff --cached --numstat | wc -l

如果你想要的东西可读:

git diff --cached --stat

+0

为什么--cached标志? – 2014-11-26 19:13:04

+3

@Humdinger问题是关于索引中未提交的文件,这是'--cached'显示的内容。如果没有'--cached',它会显示在工作目录中更改的文件,但不会显示索引(即未保存的文件)。 – mkarasek 2014-11-29 05:16:48

5

尝试git的状态-s:

git status -s | egrep "^M" | wc -l 

中号线直接开始后(^)表示上演文件。 “^ M”将是未分类但已更改的文件。

+0

谢谢,返回0,但'git的状态-s | egrep“^ M”| wc -l'工作。我认为这个空间需要在正则表达式的“M”的另一边。 – Bradley 2010-07-02 00:01:34

+0

啊,并包括其他类型的更改(添加,重命名,创建,删除):'git status -s | egrep -c“^ [MARCD]”' – Bradley 2010-07-02 00:08:37

+0

我不明白为什么这个答案有这么几票。这是最容易适应报告所有可能的状态。 – Michael 2016-01-18 20:57:29

13

这为我工作:

git status | grep 'modified:' | wc -l

它返回一个数字

+1

并且该编号为“1” – Guillochon 2016-01-18 00:11:35

+0

这不适用于新添加的文件。 – pepero 2018-01-08 21:42:54

2

对于它的价值,我更喜欢:

git diff --stat | tail -n1 

输出是这样的:

10 files changed, 74 insertions(+), 123 deletions(-)