So lassen Sie den Git-Status nur bereitgestellte Dateien anzeigen


85

Ich möchte nur eine Liste der inszenierten Dateinamen erhalten. Ich kann das entsprechende Flag --name-onlyfür den git statusBefehl nicht finden . Was ist eine gute Alternative?

Die Dateiliste wird an php -l(PHP Lint Syntax Checker) weitergeleitet.

Lösung: der vollständige Befehl

git diff --name-only --cached | xargs -l php -l

3
Wenn Sie diesen Befehl manuell ausführen, möchten Sie ihn möglicherweise in einen Pre-Commit-Hook einfügen. kernel.org/pub/software/scm/git/docs/githooks.html
MatrixFrog

Antworten:


129

Verwenden Sie git diff --name-only(mit --cached, um die bereitgestellten Dateien zu erhalten)


11

Die akzeptierte Antwort lässt Sie nicht wissen, welche Art von Änderungen vorhanden waren.

Ja, wenn Sie kein Syntaxprüfer sind, sondern eine normale Person mit einem Repository voller nicht bereitgestellter Dateien, und dennoch wissen möchten, was mit bereitgestellten Dateien geschehen wird, gibt es einen anderen Befehl:

git status --short | grep '^[MARCD]'

was zu so etwas führt wie:

M  dir/modified_file
A  dir/new_file
R  dir/renamed -> dir/renamed_to
C  dir/copied_file
D  dir/deleted_file

Offensichtlich wurden diese Dateien inszeniert und nach git commit:
deleted_filewerden gelöscht,
new_filehinzugefügt,
renamed_filewerden a renamed_to.

Hier ist eine Erklärung der Kurzformatausgabe: https://git-scm.com/docs/git-status#_short_format


1. In meiner Version (2.25.0.windows.1) steht vor "M" und "D" ein Leerzeichen . 2. Es gibt auch einen anderen Staat - "??" was ich nicht sicher bin, wie ich es interpretieren soll.
Es ist der

@itsho das Leerzeichen zeigt an, dass es nicht inszeniert ist. Diese Antwort ist richtig, da sie mit dem ersten Zeichen in der Zeile übereinstimmt. Wenn das erste Zeichen festgelegt ist, handelt es sich um eine bereitgestellte Datei. Wenn es ein Leerzeichen ist, wird es ignoriert.
Avner

1
Das ist Genie! - Es sollte eine Git-Flagge für ähnliche Dinge geben
Norfeldt

2

Inspiriert von der Antwort von @ coffman21 habe ich den folgenden Alias ​​in meinem eingerichtet.zshrc

alias gst="git status"
alias gst-staged="git status --short | grep '^\w'"
alias gst-unstaged="git status  --short | grep '^\W'"
alias gst-unstaged-tracked="git status  --short | grep '^\s'"
alias gst-untracked="git status --short | grep '^??'"

Es könnte für andere von Nutzen sein. Fügen Sie es also dem Stapel der Antworten hinzu.


0

um inszenierte Dateien mit Codeänderungen anzuzeigen

git diff --staged   

oder mit --cached, was synonym für --staged ist

git diff --cached

oder um nur Dateinamen ohne Codeänderungen anzuzeigen

git diff --staged --name-only  

Git-Diff Handbuch

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.