2010-07-01 9 views
36

Ich versuche herauszufinden, wie man die Dateien in meinem unverbundenen Index einfach zählen kann.git count files im staged index

Ich habe versucht:

git status | grep '#' | wc -l 

aber es gibt ein paar Zeilen, die mit # beginnen, die geänderte Dateien repräsentieren nicht. Hat jemand etwas besseres? Dort musste eine Flagge für git status sein, um dies zu tun.

Sogar Werkzeuge wie GitX erlauben Ihnen nicht leicht, die gestaffelten Dateien/Verzeichnisse auszuwählen und zu sehen, wie viele davon vorhanden sind.

Antwort

43

Wenn Sie etwas ein Skript kann wollen verwenden:

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

Wenn Sie etwas für Menschen lesbaren:

git diff --cached --stat

+0

Warum die --cached Flag? –

+3

@Humdinger Die Frage lautete, ob es sich um nicht festgeschriebene Dateien im Index handelt, was "--cached" anzeigt. Ohne "--cached" würde es Dateien anzeigen, die im Arbeitsverzeichnis, aber nicht im Index geändert wurden (d. H. Nicht gespeicherte Dateien). – mkarasek

5

Try git status sich:

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

M direkt nach dem Start der Zeile (^) zeigt eine gestaffelte Datei. "^ M" wäre eine nicht veränderte, aber geänderte Datei.

+0

Danke, das 0 zurückgegeben aber 'git status -s | egrep "^ M" | wc -l hat gearbeitet. Ich denke, der Raum muss auf der anderen Seite des "M" in der Regex sein. – Bradley

+0

Ah und um andere Arten von Änderungen (hinzugefügt, umbenannt, erstellt, gelöscht): 'git status -s | egrep -c "^ [MARCD]" ' – Bradley

+0

Ich verstehe nicht, warum diese Antwort so wenige Stimmen hat. Dieser kann am einfachsten angepasst werden, um alle möglichen Zustände zu melden. – Michael

13

Das ist für mich gearbeitet:

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

es gibt eine Zahl

+1

Und diese Nummer ist "1" – Guillochon

+0

Dies funktioniert nicht mit neu hinzugefügten Dateien. – pepero

2

Für was es wert ist, ziehe ich es:

git diff --stat | tail -n1 

Ausgänge so etwas wie:

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