2015-10-16 18 views
7

Sto tentando di visualizzare i commit (escluso il commit di unione) che sono stati aggiunti al ramo master nelle ultime 24 ore. Attualmente sto usando questo comando per questo:Il commit viene aggiunto al master nelle ultime 24 ore

git log --format=format:%s --no-merges --since='24 hours ago' 

Tuttavia, questo ha un problema: se un commit è più vecchio di 24 ore, ma uniti nel ramo master nelle ultime 24 ore, il comando non elencherà il commit . È possibile mostrare i commit aggiunti alla filiale master nelle ultime 24 ore e non i commit creati nelle ultime 24 ore?

Si noti che lo eseguo in un'area di lavoro CI pulita, quindi git reflog non può essermi d'aiuto.

Grazie in anticipo!

+0

Invece di '--no-merges', potrebbe' --first-parent' funzionare meglio? – ams

+0

@ams che mostrerebbero solo i commit di unione. Ho bisogno dei commit non uniti, aggiunti al ramo 'master' nelle ultime 24 ore. – WonderCsabo

risposta

3

Penso che rev-list sia quello che vuoi.

Prova questo:

git rev-list --no-merges '^<24-hour-old-commit>' HEAD 

Questo dovrebbe elencare tutti i-merge non commit che sono raggiungibili dal commettere HEAD, ma non raggiungibile da da commettere <24-hour-old-commit>.

Per esempio, in questo grafico di revisione, sarà elencare la maiuscola si impegna, ma non minuscolo:

a - b - c - 24h - H - i - J - K - HEAD 
    \    /
     D - E - F - G ' 

quando commette H, J, K e HEAD sono tutti più giovani di 24 ore di vita. Commit i è anche più recente, ma viene omesso poiché si tratta di un commit unione. Commits D, E, F e G possono essere qualsiasi età, ma sono stati uniti solo nelle ultime 24 ore, quindi sono elencati anche.


All'interno del comando precedente, --max-age o --since opzioni avranno lo stesso problema che hai con git log, ma possono essere utilizzati per trovare <24-hour-old-commit> per voi:

git rev-list -n1 --before="24 hours" --first-parent HEAD 

Cioè, "dare solo 1 ID commit, che deve avere almeno 24 ore e si trova sul ramo attuale ".

Mettere tutto insieme:

git rev-list --no-merges HEAD \ 
      --not $(git rev-list -n1 --before="24 hours" --first-parent HEAD) 

(Nota: --not abcdef è un altro modo per dire ^abcdef ma si applica a tutti seguenti argomenti, quindi riordinare le opzioni.)

L'output predefinito di rev-list sono solo revisioni non elaborate, ma è possibile renderlo più simile a git log utilizzando l'opzione --pretty. --pretty=short è approssimativamente lo stesso del solito.

+0

ma non sarebbe difficile da sceneggiare - al momento non ho idea di come, questo è dove ho anche bloccato. Ti dispiacerebbe elaborare?Penso che questo sia un compito difficile, dobbiamo trovare il primo commit aggiunto a 'master' nelle ultime 24 ore ... – WonderCsabo

+0

Stavo solo osservando ciò. Modifica presto. :-) – ams

+0

Informazioni aggiunte, si prega di verificare e riportare. :-) – ams

Problemi correlati