registro git di una singola revisione


181

Ho un impegno c. Voglio ottenere il changeset di quell'esatto commit c + metainformation e nessun altro. C'è un modo più semplice di git log -p c^..cfarlo?

Risposte:



60

La risposta di Michal Trybus è la migliore per semplicità. Ma se non vuoi il diff nel tuo output puoi sempre fare qualcosa del tipo:

git log -1 -U c

Questo ti darà il registro di commit e quindi avrai il pieno controllo di tutte le opzioni di registrazione git per i tuoi scopi di automazione. Nel tuo caso hai detto che volevi il set di modifiche. Il modo più comprensibile per ottenere ciò sarebbe:

git log --name-status --diff-filter="[A|C|D|M|R|T]" -1 -U c

Oppure, se stai usando una versione git maggiore di 1.8.X sarebbe:

git log --name-status --diff-filter="ACDMRT" -1 -U c

Questo ti darà risultati simili a:

commit {c}
Author: zedoo <zedoo@stackoverflow.com>
Date: Thu Aug 2 {time-stamp}

   {short description}
D    zedoo/foo.py
A    zedoo/bar.py

Ovviamente puoi filtrare qualunque evento ritieni opportuno e formattare il ritorno come desideri tramite i tradizionali comandi git-log che sono ben documentati qui .


14
Se non vuoi il diff, fallo git show --name-only <sha1>!
dbn

16
Se semplicemente non vuoi il diff, usa git show -s <commit>.
Moeffju,

3
Cosa fa -1? Dove è documentato?
alex

1
@alex Vedi l'output di git help logsotto la sezione "Commit Limiting". Oppure vedi git-scm.com/book/en/v2/… -<number> limita il numero di commit da produrre.
LarsH,


0

È possibile utilizzare per filtrare le modifiche in base alla descrizione del commit:

git log --grep='part_of_description' -p

dove git log --grep='part_of_description'seleziona i commit che contengono 'part_of_description' e -pmostra il changeset di ogni commit

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.