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.
Invece di '--no-merges', potrebbe' --first-parent' funzionare meglio? – ams
@ams che mostrerebbero solo i commit di unione. Ho bisogno dei commit non uniti, aggiunti al ramo 'master' nelle ultime 24 ore. – WonderCsabo