Ist es möglich, nur geänderte Dateien zu "git status"?

173

Ist es möglich git statusund nur geänderte Dateien anzuzeigen?

Das Problem ist, dass ich zu viele bereitgestellte Dateien habe, die ich momentan nicht festschreiben oder gitignore möchte, und ich kann nicht nach oben scrollen. Ich habe ein Scrollback-Limit für Ubuntu festgelegt.

Chrisjlee
quelle
1
Wie haben Sie ein Bildlauflimit? Standardmäßig git statuswird der Pager aufgerufen.
Lily Ballard
Leider ist das Scrollback-Limit auf meinem Computer auf 512 Zeilen eingestellt. Ich denke, ich könnte es ändern; Ich würde jedoch einen einzeiligen Befehl bevorzugen, um nur geänderte Dateien im Status anzuzeigen, da GD / imagecache schließlich noch mehr Dateien generiert.
Chrisjlee
1
Richtig ... mein Punkt ist, dass der Pager den Scrollback Ihres Terminals nicht verwendet.
Lily Ballard
Stimmt etwas nicht, wenn Sie nur nach dem suchen, was Sie interessant finden? Verwenden Sie --shortoder --porcelain, um einzeilige Versionen des Status abzurufen.
Torek
2
Ein weiterer Punkt, basierend auf dem zu verwendenden Vorschlag git ls-files -m: Welche Modifikation (en) interessieren Sie, inszeniert, nicht inszeniert oder beides?
Torek

Antworten:

268

Sie können dies nicht tun git status, aber Sie können git ls-files -malle geänderten Dateien anzeigen.

Lily Ballard
quelle
6
Damit andere wissen, werden nur Dateien angezeigt, die geändert wurden, ohne noch bereitgestellt zu werden.
Gerry
11
Dies ist zwar die akzeptierte Antwort, enthält jedoch ungenaue Informationen. Sie können "nur geänderte Dateien mit" Git-Status "versehen", git status | grep modifiedwie dies in der Antwort von user23186 angegeben ist.
K. Alan Bates
9
Für mich git ls-files -mzeigt nichts, aber git status | grep modifiedes funktioniert.
Sandeepan Nath
1
Wie andere bereits betont haben, werden hier nur nicht bereitgestellte Dateien angezeigt. Wenn Sie sowohl nicht bereitgestellte als auch bereitgestellte Dateien anzeigen möchten, ist dies die beste Antwort, die ich gesehen habe: stackoverflow.com/a/39994894/452587
am
1
@thdoan Es gibt eine Reihe von Optionen zum Anzeigen von bereitgestellten Dateien, obwohl diese spezielle Frage offenbar bereitgestellte Dateien explizit ausschließen möchte. git diff --name-only --diff-filter=M HEADEs werden nur geänderte Dateien sowohl für bereitgestellte als auch für nicht bereitgestellte Dateien angezeigt. Sie sollten jedoch in den Dokumenten nachsehen, --diff-filterwelche anderen Filtertypen Sie möglicherweise hinzufügen möchten.
Lily Ballard
57

Es sieht so git status -unoaus, als würden nur Dateien angezeigt, die von git verfolgt werden, ohne dass etwas anderes im Verzeichnis angezeigt wird. Nicht genau das, wonach Sie gefragt haben, aber vielleicht das Gleiche erreichen (eine Liste mit lesbaren Längen von Dateien erhalten, die Git-Tracks enthalten).

TomNysetvold
quelle
1
git status -u nozeigt weder (1) geänderte Dateien an, die geändert wurden, noch (2) verfolgte Dateien, die bereitgestellt wurden. Ich habe dies mit den Git-Versionen 1.8.5.2 und 1.9.4 überprüft.
mxxk
2
@ TomNysetvold, können Sie tatsächlich meinen git status -uno( stackoverflow.com/questions/7008546/… )
mxxk
29
git status -s | awk '{if ($1 == "M") print $2}'
Carl Bäckström
quelle
3
Oderawk '$1 == "M" { print $2 }'
Calpau
29

Für geänderte Dateien:

git status | grep modified:
Lanze
quelle
1
So nützlich, dass ich einen Alias ​​dafür erstellt habe:git config --global alias.modified '!git status | grep modified:'
Richard Parnaby-King
15

git diff --name-only --diff-filter=M

ZeroGraviti
quelle
2
Ich empfehle diese Filter, git diff --cached --name-only --diff-filter=ACMRdie hinzugefügte, kopierte, geänderte und umbenannte Dateien ausführen.
qwertzguy
7

git diff --name-only funktioniert auch.

mpelzsherman
quelle
3

Ich habe nach den gleichen Informationen gesucht und festgestellt, dass die folgenden Dateien geändert wurden:

git status -uno
Tectrendz
quelle
2
git status -uno --porcelainfügt schöne Ausgabe für das Parsing-Skript hinzu
pprzemek
3

Sie können verwenden

$ git status -uno 

um nur geänderte Dateien aufzulisten.

Karthik
quelle
3

Das Problem ist, dass ich zu viele bereitgestellte Dateien habe, die ich momentan nicht festschreiben oder gitignore möchte, und ich kann nicht nach oben scrollen.

Dies beantwortet möglicherweise nicht direkt die Frage, nur geänderte Dateien aufzulisten, kann jedoch dazu beitragen, die Anzahl der aufgelisteten Dateien zu begrenzen.

Sie können einen Pfad übergeben, git statusum die Ausgabe auf einen bestimmten Ordner im Repo zu beschränken.

Beispielsweise:

git status app
git status spec
git status src/components
BillFienberg
quelle
2

Um die geänderten Dateien aufzulisten, verwenden Sie:

git ls-files -m

Wenn Sie nur den Basisnamen (keinen Pfad) möchten, können Sie jedes Ergebnis zeilenweise mit xargs an den Befehl basename weiterleiten:

git ls-files -m | xargs -L 1 basename
briggySmalls
quelle
1

Ich benutze diesen Befehl:

$ git status -uno -sb

Und die Ausgabe sieht so aus:

## master...origin/master
 M GNUmakefile
 M include/mp4v2/project.h
SebMa
quelle
0

Ich benutze git cola. Es ist ein einfacher und eleganter UI-Client, der Ihnen die geänderten Dateien anzeigt und Ihnen eine diff-ähnliche Aufnahme der von Ihnen vorgenommenen Änderungen bietet.

git colabietet Ihnen eine grafische Benutzeroberfläche, über die Sie visualisieren können, welche Dateien Sie geändert haben, welche Sie bereitgestellt haben und welche nicht. Ihre Frage war, nur den Git-Status zu verwenden, glaube ich, aber ich dachte, Git-Cola kann helfen, wenn das und andere Dinge auch. Weitere Informationen finden Sie auf dieser Webseite: git-cola.github.com/screenshots.html

n_x_l
quelle
1
Könnten Sie uns mitteilen, wie sich das auf meine Antwort bezieht, da ich mit dieser Git Cola nicht vertraut bin? zB Screenshots oder mehr Details?
Chrisjlee
es, warum wurde herabgestimmt? :) Wie auch immer, Git Cola bietet Ihnen eine GUI, mit der Sie visualisieren können, welche Dateien Sie geändert haben, welche Sie inszeniert haben und sogar welche, die Sie nicht verfolgen. Ihre Frage war, nur den Git-Status zu verwenden, glaube ich, aber ich dachte, Git-Cola kann helfen, wenn das und andere Dinge auch. Überprüfen Sie diese Webseite von weiteren Informationen: git-cola.github.com/screenshots.html
n_x_l
Wie ändere ich die Interface-Sprache von Cola?
Ziyuang
0

Wenn Sie die geänderten Dateien auflisten möchten, können Sie dies tun:

git log -n1 --oneline --name-status | grep '^M'

David Hernandez
quelle
0

Um alle geänderten Dateien aufzulisten, verwenden Sie:

git show --stat --oneline HEAD
Fayaz
quelle
0

Alle guten Antworten; Nur FEI, "git checkout" (Wechseln zu oder in demselben Zweig) scheint nur geänderte Dateien anzuzeigen.

user1172173
quelle
0

Betriebssystem: Windows

Der folgende Befehl zeigt alle Zeilen an, die "geändert:" , "umbenannt:" oder "neue Datei:" enthalten.

git status | findstr "modified: renamed: new file:"

Wenn Sie den Dateityp angeben möchten: (zum Beispiel *.py *.ini)

git status *.py *.ini | findstr "modified: renamed: new file:"

Wenn Sie denken, dass es zu viel Mühe gibt, so viel zu tippen:

  1. eine Batchdatei erstellen (zB st.bat)

  2. Schreiben Sie den Inhalt wie folgt:

    @echo off
    :: st.bat  (this line doesn't necessarily. ( just let you know the scripts name.))
    git status %~1 | findstr "modified: renamed: new file:"
    
  3. Fügen Sie den Umgebungspfad hinzu, der Ihre Batchdatei enthält. ( st.bat)

  4. Verwendung

    st.bat "*.py *.ini"
    

    (Hinweis: Wenn Typ> 1 ist, muss das Semikolon hinzugefügt werden.)

Betriebssystem: LINUX

wie @Lance sagt, können Sie versuchen

git status | grep modified:

Carson
quelle