2012-03-28 9 views

Antwort

7

Ich bin mir nicht sicher, was Sie in Bezug auf einander meinen, aber wenn Sie eine individuelle Auflistung (z. B. alle geänderten Dateien) möchten, können Sie mit den richtigen Flags verwenden (für geänderte Dateien ist es -m). Wenn Sie alle diese Informationen auf einmal haben möchten, können Sie git status --porcelain verwenden, um eine script-analysierbare Ausgabe des Status zu erhalten.

+0

Der Git-Status listet die neuen Verzeichnisse/Dateien, die dem Remote-Repo hinzugefügt wurden, nicht auf. Macht es ? – Jean

+0

@alertjean: Was meinst du mit "neu"? Sind sie nicht verfolgt? Werden sie hinzugefügt, aber nicht begangen? Was sind Sie? –

+0

Danke, das ist genau das, was ich gesucht habe. Jetzt kann ich z.B. 'geany $ (git ls-files -m)' – mwfearnley

9

Was Sie wahrscheinlich wollen, ist so etwas wie:

git fetch  # update what you know about the remote repo 
git diff --name-status master origin/master 

Aber es ist ziemlich schwierig, genau zu sagen, was Zweige Sie Ihre Frage diff wollen.

7

Eine Möglichkeit, dies zu tun, ist mit dem whatchanged Befehl:

$ git whatchanged 

Dies zeigt, welche für jeden im Baum begeht geänderte Dateien und kann verwendet werden, um Besonderheiten als auch zu suchen. Werfen Sie einen Blick auf git help whatchanged

23

Der beste Weg, diese Datei zur Liste wird mit git status --porcelain

Zum Beispiel: Um zuvor gelöschte Dateien zu entfernen:

git status --porcelain | awk 'match($1, "D"){print $2}' | xargs git rm 
+0

Das Entfernen der letzten Pipe am Ende ist ein guter Weg, um aufzulisten, welche Dateien gelöscht wurden. Hilfreich, wenn Sie einen sehr langen Git-Status haben und nach einem bestimmten Status filtern möchten. – IanVS

5

Verwenden Sie den Trockenlauf (-n) Option von git add:

git add -A -n

+0

yup, das ist die eine, die ich wollte! – Doug

1

Verwendung mit dem Befehl --name-status

Beispiel mit Tags:

git diff v1.0.1 v1.0.2 --name-status 

Beispiel mit Commits:

git diff b79810fc4d be69e41d1c --name-status 

es listet alle aktualisierten Dateien mit ihrem Status: M - modifizierte D - gelöscht A - hinzugefügt

0

An erhalten nur Namen und den Status der momentan geänderten Dateien Datei können Sie einfach:

git diff --name-status

Sie werden die blanken Ausgabe wie folgt erhalten:

M  a.txt 
M  b.txt 

Nun Rohr der Ausgang cut zu extrahieren die zweite Säule:

git diff --name-status | cut -f2

Dann werden Sie nur die Dateinamen haben:

a.txt 
b.txt 
Verwandte Themen