2012-04-27 14 views
44

due domande:registro primi 10 in git

  1. Come mostrare i primi 10 commit in git dall'inizio alla fine. (nessuna diramazione)
  2. Come specificare l'indice di commit e registrarlo. (mostra il secondo o il terzo)

So che git usa il genitore per collegare il commit, è facile registrare il commit dall'inizio alla fine. tipo: git log HEAD~10

Ma ho bisogno di interrogare dall'inizio alla fine, è possibile?

+0

correlati: [? Come mostrare primo commit da 'git log'] (http://stackoverflow.com/questions/ 5188914/how-to-show-first-commit-by-git-log) – CharlesB

+0

scorrere fino a @kostix answer –

risposta

32

sufficiente accedere tutto con un formato di linea e la coda di uscita:

git log --pretty=oneline | tail -n 10 
+0

Ottimo! Questo è quello che sto cercando. Tks @CharlesB. –

+2

Oppure, usare 'git rev-list HEAD | tail -n 10' per ottenere i 10 ID da elencare, che puoi mostrare in qualsiasi formato ti piaccia (non limitato al metodo a una riga). – torek

+8

'tail' sembra perdere la bella colorazione che ottengo nella mia console git. Passare un parametro come 'git log --oneline -10' come nell'altra risposta funziona come mi aspettavo. –

7

Per ottenere gli ultimi 10 commit:

git log HEAD~10..HEAD 

Per farli nel più antico-to-ultimo ordine:

git log --reverse HEAD~10..HEAD 

Nota che se ci sono le unioni, questo può mostrare più di 10 commit ; aggiungi --first-parent se vuoi attraversare solo il primo genitore di ciascun ramo.

Per ulteriori dettagli, consultare la documentazione di git rev-list.


Modifica: hai già ottenuto una risposta utile in precedenza per "mostrare i commit vicino all'inizio della cronologia" (di nuovo, guarda le avvertenze su più DAG di commit non connessi in un repository). Ma si può anche fare, per es .:

git log --no-walk `git rev-list HEAD | tail -n 10` 

e:

git log --no-walk `git rev-list --reverse HEAD | head -n 10` 

a seconda di quale ordine si desidera che i risultati.

+0

Tks per la risposta. Ma non ho bisogno degli ultimi 10 commit ma il primo. Per essere specifici, se il commit è A-B-C-D-E-F-G (HEAD). Come registrare l'A-B-C e come registrare C dall'indice 2? –

+0

Oh! Non c'è alcuna garanzia che esista un solo "primo commit", ma se esiste, vedere il link @CharlesB aggiunto. – torek

+0

Il modo può funzionare. qualsiasi modo naturale? git log --pretty = oneline | wc -l log git HEAD ~

129
git log -10 

mostrerebbe 10 ultima impegna corrispondente alla specifica di revisione (una specifica mancante significa "tutti i commit").

Vedere manpage:

git help log 

sezione Commit Limiting

-<number>, -n <number>, --max-count=<number> 
    Limit the number of commits to output. 
+2

semplice, e non dipende dal fatto che 'tail' sia disponibile sulla tua piattaforma. – tenpn

+5

e non si scherza con git formattazione/colorazione. Questa dovrebbe essere la risposta accettata x100 – kuzyn

+0

Questa è la risposta corretta! Bello. –

2

sufficiente accedere tutto invertire -1 significa elenco un log

git log --reverse -1 
0

Perché ... più in dettaglio: p

  1. Come mostrare i primi 10 commit in git dall'inizio alla fine. (n. )
  2. Come specificare l'indice di commit e registrarlo.(Visualizza la seconda o terza )

By (senza ramo), si potrebbe chiedere circa la reflog piuttosto che qualsiasi data catena ascendenza. Il seguente non ha nulla a che fare con il ramo in cui ti trovi.

git log -g --pretty=oneline | tail -10

<sha> [email protected]{###}: action: summary (old) 
<sha> [email protected]{###}: action: summary (older) 
... 
<sha> [email protected]{###}: action: summary (oldest) 
  • -g è --walk-reflogs Invece di camminare commit catena di ascendenza, camminare entries.q reflog
  • aggiungere |cut -d ' ' -f 2|tr -d ':' > log per registrare solo il reflog commettere indice.

Di seguito vi mostrerà i primi antenati del ramo attualmente controllato.

git log --reverse --pretty=oneline | head -10 | cat -n

1 <sha> summary (oldest) 
2 <sha> summary (second) 
  • --reverse uscita i commit in ordine inverso.
  • Impossibile utilizzare semplicemente -n 10 o -10 in quanto si rompe --reverse
  • cat -n aggiunge i numeri di riga

0

Ecco il mio approccio,

Per ottenere i primi 10 commit (commettono index?):

git log -n 10 

-n è numero

Ulteriori Per ottenere il prossimo 10 commettere saltare prima 10:

git log --skip=10 -n 10 
Problemi correlati