it-swarm.com.de

git: Nur neue Dateien auflisten

Wenn ich einen git status mache, erhalte ich eine Liste der Dateien, denen new file: vorangestellt ist. Wie kann ich nur diese Liste bekommen? Ich möchte diese Dateien in einer einfachen Schleife in einem kleinen Shell-Skript verarbeiten.

26
BetaRide

Ich würde etwas wie git status --porcelain | grep "^A" | cut -c 4- verwenden

16
Rom1

Verwenden Sie nicht grep, um die Git-Ausgabe zu analysieren. Git hat fast sicher die Dinge, nach denen Sie suchen, eingebaut (außer wenn Sie wirklich fortgeschrittenes Zeug haben).
Sie können git diff verwenden, um die Änderungen anzuzeigen. --name-only zeigt nur die Dateinamen an. --diff-filter=A listet nur die hinzugefügten Dateien auf.
Wenn Sie neue Dateien anzeigen möchten, die Sie bereits zum Index hinzugefügt haben, verwenden Sie --cached. Um beide Unterschiede zu HEAD zu sehen.
Die Befehle sehen folgendermaßen aus:

git diff --name-only --diff-filter=A --cached # All new files in the index  
git diff --name-only --diff-filter=A          # All files that are not staged  
git diff --name-only --diff-filter=A HEAD     # All new files not yet committed
72
andsens

Sie können git status --short verwenden, um die Liste der Dateien abzurufen. 

15
vpatil

Anstatt die Ausgabe von "git status" zu analysieren, ist es wahrscheinlich eleganter zu verwenden

git ls-files -o  --exclude-standard

Wie bei git status erzeugt ls-files eine Ausgabe relativ zu Ihrem aktuellen Arbeitsverzeichnis. 

Möglicherweise möchten Sie die --full-name-Option hinzufügen:

git ls-files -o  --exclude-standard --full-name
12
Keith Hanlan
git status | grep "new file:" | cut -c 14-

git status | grep "modified:" | cut -c 14- 
0
Raviv Shweid

Liste der neuen Dateien oder um Dateien zum Hinzufügen von git zu erhalten, können Sie mit git status und dem Befehl grep wie git status -s | grep ?? erhalten

[email protected]:~/project-repo-directory# git status -s | grep ??
 ?? src/.../file1.js
 ?? src/.../file2.js
 ?? src/.../file3.js
 ....
0
SuperNova