Domanda Come elencare tutti i file in un commit?


Sto cercando un semplice git comando che fornisce un elenco ben formattato di tutti i file che facevano parte del commit dato da un hash (SHA1), senza informazioni estranee.

Ho provato:

git show a303aa90779efdd2f6b9d90693e2cbbbe4613c1d

Sebbene elenchi i file, include anche le informazioni sulla differenza indesiderate per ciascuno.

C'è un altro git comando che fornirà solo la lista che voglio, in modo che possa evitare di analizzarlo dal git show produzione?


2170
2018-01-08 12:26


origine


risposte:


Modo preferito (perché è un piombatura comando; pensato per essere programmatico):

$ git diff-tree --no-commit-id --name-only -r bd61ad98
index.html
javascript/application.js
javascript/ie6.js

Un altro modo (meno preferito per gli script, perché è un porcellana comando; pensato per essere rivolto all'utente)

$ git show --pretty="" --name-only bd61ad98    
index.html
javascript/application.js
javascript/ie6.js

  • Il --no-commit-id sopprime l'output ID di commit.
  • Il --pretty argomento specifica una stringa di formato vuota per evitare il cruft all'inizio.
  • Il --name-only argomento mostra solo i nomi dei file che sono stati interessati (Grazie Hank).
  • Il -r argomento è quello di recitare in sotto-alberi

2852
2018-01-08 13:02



Se vuoi ottenere l'elenco dei file modificati:

git diff-tree --no-commit-id --name-only -r <commit-ish>

Se si desidera ottenere l'elenco di tutti i file in un commit, è possibile utilizzare

git ls-tree --name-only -r <commit-ish>

189
2018-01-14 19:22



Lo presumo gitk non è desiderato per questo. In tal caso, prova git show --name-only <sha>.


180
2018-01-08 12:34



Io personalmente uso la combinazione di --statistica e --una linea con il mostrare comando:

git show --stat --oneline HEAD
git show --stat --oneline b24f5fb
git show --stat --oneline HEAD^^..HEAD

Se non ti piace / vuoi le statistiche di aggiunta / rimozione, puoi sostituire --statistica con --name-only

git show --name-only --oneline HEAD
git show --name-only --oneline b24f5fb
git show --name-only --oneline HEAD^^..HEAD

113
2017-07-11 23:21



Recentemente ho avuto bisogno di elencare tutti i file modificati tra due commit. Quindi ho usato questo comando (anche * nix specifico)

git show --pretty="format:" --name-only START_COMMIT..END_COMMIT | sort | uniq

Aggiornare: O come Ethan indica sotto

git diff --name-only START_COMMIT..END_COMMIT

utilizzando --name-status includerà anche la modifica (aggiunta, modificata, cancellata, ecc.) accanto a ciascun file

git diff --name-status START_COMMIT..END_COMMIT

58
2018-04-26 12:23



Puoi anche fare

git log --name-only

e puoi sfogliare vari commit, messaggi di commit e file modificati.

Digita q per ottenere il tuo prompt indietro.


56
2018-05-27 01:20



La forma più semplice:

git show --stat (hash)

È più facile da ricordare e ti darà tutte le informazioni di cui hai bisogno.

Se vuoi veramente solo i nomi dei file puoi aggiungere il --name-only opzione.

git show --stat --name-only (hash)


48
2017-07-16 00:06



Io uso cambiato alias un abbastanza spesso. Per configurarlo:

git config --global alias.changed 'show --pretty="format:" --name-only'

poi:

git changed (lists files modified in last commit)   
git changed bAda55 (lists files modified in this commit)
git changed bAda55..ff0021 (lists files modified between those commits)

Comandi simili che potrebbero essere utili:

git log --name-status --oneline (very similar, but shows what actually happened M/C/D)
git show --name-only

45
2018-04-29 13:13



Usando il comando diff di git standard (buono anche per lo scripting):

git diff --name-only <sha>^ <sha>

Se si desidera anche lo stato dei file modificati:

git diff --name-status <sha>^ <sha>

Funziona bene con l'unione di commit.


34
2018-04-29 14:53