2014-06-16 16 views
5

posso scoprire quanti si impegna ci sono con questo:Come ottenere l'ennesimo commit dal primo commit?

git rev-list HEAD --count 

Diciamo che restituisce 123 commit.

Come posso trovare l'ennesimo commit su 123? Si noti che non sto chiedendo l'ennesimo commit prima di HEAD. Mi piacerebbe sapere l'ennesimo commit dopo il primo commit.

+0

è che ben definita, in presenza di fusioni? – Thilo

+0

Intendo utilizzarlo per il mio ramo di release durante la codifica, quindi non credo che le unire entrino in gioco. – kraftydevil

risposta

10

questo potrebbe essere considerato brutto, ma non riuscivo a pensare ad un modo migliore

$git log --skip=N --max-count=1 

Questo mostrerà esattamente 1 commit, contando di ritorno da HEAD da N. Per utilizzarlo è necessario fornire un numero per N. N è calcolato con

N = total-commits - desired-commit-nr

Say git rev-list HEAD --count ritorna 10 e si desidera visualizzare il terzo commettere

$git log --skip=7 --max-count=1 

Usiamo 7 perché

7 = 10 - 3 
total^^the commit we want 
+0

In alternativa, se si utilizza '--reverse' è possibile filtrare con un comando esterno (' git rev-list --reverse HEAD | sed -n -e 3p' per ottenere il 3 ° dall'ultimo). Fastidiosamente non si può combinare questo con '--skip' mentre l'azione skip si verifica * prima * la retromarcia, quindi è ancora necessario saltare 7. Inoltre, se la lista rev è molto lunga, piping attraverso sed solo per estrarre una riga è costoso, quindi quanto sopra è meglio. – torek

+0

la matematica semplice mi sconfigge di nuovo! – kraftydevil

Problemi correlati