2013-03-07 12 views
26

Io uso regolarmente il seguente comando per elencare i file modificati tra due commit:Lista tutti i file modificati con lo status di cambio tra Git impegna (aggiunto, modificato, cancellato)

git diff --name-only SHA1 SHA2 

Dà una lista di file un po 'come questo :

 
/src/example/file1 
/src/example/file2 
/src/example/file3 

Non c'è quasi fine a quanto sia utile.

Mi piacerebbe molto essere anche in grado di mostrare accanto a ciascun file un breve riferimento allo stato del cambiamento, indicando se un file è stato aggiunto, modificato o cancellato.

Ecco un esempio per dimostrare il concetto:

git diff --name-only --and-how-me-the-change-status SHA1 SHA2 
 
A /src/example/file1 
M /src/example/file2 
D /src/example/file3 

Lo stato di cambiamento (A, M, D) viene mostrato solo come esempio, non mi importa di cosa si tratta così a lungo come è inequivocabile.

Sono consapevole che posso utilizzare l'opzione --diff-filter per elencare solo i file aggiunti o solo i file modificati o solo i file eliminati. L'utilizzo di questa opzione significa che devo eseguire tre comandi per ottenere tre elenchi di nomi di file. Questo è bello ma potrebbe essere più bello.

C'è un singolo comando che posso eseguire per fornirmi l'output di esempio sopra riportato?

+0

Questa domanda non è un duplicato di http://stackoverflow.com/questions/1552340. È molto specifico chiedere come mostrare lo stato del file, non solo un elenco di file. –

risposta

70

Usa --name-status, è la stessa come --name-only più lo stato dei file modificati:

git diff --name-status SHA1 SHA2 
+2

Brillante, ha un fascino! –

+1

Inoltre, assicurarsi di non collocare correttamente SHA1 e SHA2. Scriverà 'A' (aggiunto) invece di' D' (eliminato) e viceversa. – Stichoza

+1

Per ordinare in base allo stato della modifica, su Windows o Linux: '' 'git diff --name-status SHA1 SHA2 | sort''' – jdforsythe

Problemi correlati