Un riff su git: show all changed files between two commits: Voglio un elenco di tutti i file che sono stati cambiati tra due commit, anche se ora sono gli stessi (cioè, modificati e quindi modificati).git: mostra tutti i file modificati tra due commit
risposta
Questo è il meglio che ho potuto venire con:
git log --name-only --pretty=oneline --full-index HEAD^^..HEAD | grep -vE '^[0-9a-f]{40} ' | sort | uniq
Sostituire TESTA ^^ e la testa con i commit che si desidera confrontare.
Il mio tentativo utilizza git log
con --name-only
per elencare tutti i file di ciascun commit tra quelli specificati. --pretty=oneline
rende la parte sopra l'elenco dei file composto solo da SHA di commit e titolo del messaggio. --full-index
rende SHA i 40 caratteri completi. grep
filtra qualsiasi cosa simile a uno SHA seguito da uno spazio. A meno che non si abbiano file che iniziano con uno SHA seguito da uno spazio, il risultato dovrebbe essere accurato.
Penso che questo comando è la vostra risposta:
git diff --stat abc123 xyz123 #where abc123 and xyz123 are SHA1 hashes of commit objects
Direttamente dal git community book
Se non si desidera vedere l'intero patch, è possibile aggiungere il '--stat' opzione, che limiterà l'output ai file che sono cambiati insieme a un piccolo grafico testuale che mostra quante linee sono cambiate in ogni file.
In particolare, 'git diff --stat
No, non è esattamente quello che voleva. Git diff fa una differenza diretta tra gli alberi, non considera i commit. Se crei un nuovo file con contenuto "A", quindi modifica i contenuti in "B", quindi li rimandi a "A", "git diff --stat HEAD ^^ HEAD' ti darà un risultato vuoto. – igorw
'git diff --name-only' è probabilmente migliore di' git diff --stat' ma come sottolineato 'git diff' non sta facendo quello che l'OP voleva. – nnutter
Questo è simile a igorw 's, ma evita la rimozione della SHA via grep
:
git log --pretty='format:' --name-only HEAD^^..HEAD | sort -u
Se inoltre volete vedere come i file sono stati modificati, sostituire --name-only
con --name-status
.
Ho appena testato questo comando. Ci sono voluti circa 10 secondi per elaborare poi ha iniziato a sputare un elenco di file enorme. –
@ ostler.c: hai passato l'intervallo di revisione in '" $ @ "'? Altrimenti mostrerà le modifiche esistenti, il che è molto :-) Ho rivisto la mia risposta per usare un esempio, come nelle altre risposte. –
Va bene, è logico. Sono sorpreso di non sapere "$ @". Sebbene, non lo trovo molto utile per la maggior parte dei comandi. –
Se vogliono solo vedere i nomi dei file in cui commettono b
è cronologicamente dopo a
:
git diff <a commit sha1>...<b commit sha2> --name-only # b is after a in time
Se si desidera visualizzare tutti i nomi dei file e ciò che è stato cambiato da commettere un commettere b poi cadere l'ultimo discussione.
git diff <a commit sha1>...<b commit sha2> # shows file names and what changed in each file
Un esempio di <commit sha1>
sono il commit id come 675ee6860d2c273bcc6c6a0536634a107e2a3d9f
. Generalmente le prime 8-10 cifre funzioneranno sulla maggior parte dei progetti, ma potrebbero aver bisogno di più se il progetto ha un gran numero di commit. In genere utilizzo l'output dell'id da git log --oneline
.
Quando si ottiene una differenza di a ... b e b è più tardi di una volta, è facile vedere ciò che è stato modificato in ogni file cronologicamente.
Vorrei usare; prendendo i primi 8 dell'hash commit. Se si voleva si poteva tubo in un file come per il seguito:
git log 12345678..87654321 > C:\GitChanges.txt
- 1. Egit mostra tutti i file come modificati
- 2. Git pre-commit hook: file modificati/aggiunti
- 3. Git che mostra file identici come modificati
- 4. Come aprire tutti i file modificati con git?
- 5. Come rendere `git log --stat - <path>` mostra * tutti * i file nei commit selezionati?
- 6. Rimuovere tutti i file per git commit?
- 7. Git: commit e aggiungere automaticamente tutti i file non monitorate
- 8. Diff tra file singoli tra due commit
- 9. log git --follow, mostra tutti i commit comprese le unioni
- 10. Ottenere un elenco di tutti i tag tra due commit
- 11. Stile di commit Git: tutti i file modificati in una volta o uno alla volta?
- 12. git - elenco di tutti i file modificati ma non cancellati in un commit
- 13. Lista tutti i file modificati con lo status di cambio tra Git impegna (aggiunto, modificato, cancellato)
- 14. Lo stato git mostra file di tracciati non modificati/non modificati?
- 15. Git aggiunge tutti i file modificati, cancellati e non tracciati?
- 16. Come posso ottenere il diff tra tutti i commit avvenuti tra due date con Git?
- 17. Git pre-commit hook: ottenere l'elenco dei file modificati
- 18. Mostra differenze di non unione per due commit in git
- 19. Mercurial mostra i file come modificati in modo errato
- 20. Come esportare i file modificati tra due revisioni SVN
- 21. Git: come reimballano tutti i commit sciolto
- 22. Android Studio che mostra i file non modificati nella finestra di dialogo delle modifiche di commit
- 23. Esportare/archiviare i file modificati solo in Git
- 24. git checkout tutti i file
- 25. commit git eliminazione di tutti i file in repo
- 26. modifica un file in tutti i commit in git
- 27. Elenco di tutti i commit git?
- 28. Numero di commit tra due commit
- 29. Configura tutti i file modificati su Github in Netbeans
- 30. Sposta file tra commit
Quando eseguo questo comando contro la testa^e la testa, ho un elenco di quello che sembra ogni singolo file nel repository; anche quelli che non sono cambiati. –
Il mio male, il formato è " .. " invece di "". –
igorw
Grazie, un po 'imbarazzante, ma lo farà. – Andrew