2010-07-01 46 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(-)