Oops. Non l'ho letto abbastanza attentamente.
L'unica informazione in un commit è l'id del genitore (o dei genitori). Non è possibile ottenere un figlio da un commit padre (questa è la parte diretta del repository che è un DAG).
Guardando ancora questo - sembra che l'opzione --ancestry-path
per git log possa farlo. Per esempio dato:
* 85d26ab When compiling vim, also compile & install gvim
* 3146e5d Merge remote-tracking branch 'origin/devel' into deve
|\
| * 28d08e5 rebasing-merge: specify all commits explicitly
* | 006d11d Help 'file' find its magic file
|/
* e68531d (tag: Git-1.7.6-preview20110720) Update submodules
possiamo ottenere i tutti i figli di questi due commit utilizzando
git log --oneline --ancestry-path B..E
se poi invertire questa e far fuori il primo - che è F.
git rev-list --reverse --ancestry-path 28d08e5..006d11d | head -1
nel mio caso che restituisce 3146e5d.
questo è un grafico fantastico, come l'hai fatto? –
Cosa succede se c'è più di un "primo" bambino comune? Ad esempio, potrebbe esserci un commit che è un'unione di B ed E. – svick
È possibile modificare l'output di 'git rev-list --children' qualcosa che ha fatto questo tipo: http://stackoverflow.com/questions/1761825/riferimento-il-figlio-di-un-commit-in-git. – ellotheth