Come fare in modo che git status mostri solo i file con staging


86

Vorrei ottenere un elenco dei soli nomi di file in scena. Non riesco a trovare il flag equivalente --name-onlyper il git statuscomando. Qual è una buona alternativa?

L'elenco dei file verrà reindirizzato a php -l(controllo sintassi lint PHP).

Soluzione: il comando completo

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

3
Se stai eseguendo quel comando manualmente, sembra che potresti volerlo inserire in un hook pre-commit. kernel.org/pub/software/scm/git/docs/githooks.html
MatrixFrog

Risposte:


130

Usa git diff --name-only(con --cachedper ottenere i file staged)


14

La risposta accettata non ti farà sapere che tipo di cambiamenti ci sono stati.

Sì, se non sei un controllore della sintassi ma una persona normale con un repository pieno di file non in stage e vuoi comunque sapere cosa accadrà ai file in staging, c'è un altro comando:

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

che porta a qualcosa di simile:

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

Ovviamente, questi file sono stati messi in scena, e dopo git commit:
deleted_fileverranno eliminati,
new_fileverranno aggiunti,
renamed_filediventerà un file renamed_to.

Ecco una spiegazione dell'output in formato breve: https://git-scm.com/docs/git-status#_short_format


1. nella mia versione (2.25.0.windows.1) c'è uno spazio prima di "M" e "D". 2. C'è anche un altro stato - "??" che non sono sicuro di come interpretare.
itsho

@itsho lo spazio indica che non è organizzato. Questa risposta è corretta perché corrisponde al primo carattere della riga. Se il primo carattere è impostato, si tratta di un file a fasi. Se è uno spazio viene ignorato.
Avner

1
Questo è geniale! - dovrebbe esserci una bandiera git per cose simili
Norfeldt

4

Ispirato dalla risposta di @ coffman21 , ho impostato il seguente alias nel mio file.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 '^??'"

Potrebbe essere utile a chiunque altro. Quindi aggiungendolo alla pila di risposte.


1
per la colorazione coerente è possibile aggiungere un .a grep, per colorare entrambe le 2 caratteri iniziali, come: grep '^\w.', grep '^\W.',grep '^\s.'
geekley

non c'è bisogno dell'ultimo, però; ha già due caratteri??
geekley

Ora è stato risolto. Grazie ancora
Norfeldt

0

per visualizzare i file in fasi con modifiche al codice

git diff --staged   

o usando --cached che è sinonimo di --staged

git diff --cached

o per visualizzare solo i nomi dei file senza modifiche al codice

git diff --staged --name-only  

manuale git-diff

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.