Vaya. No lo leí con cuidado.
La única información en una confirmación es la identificación de su padre (o sus padres). No se puede obtener un hijo de una confirmación principal (esta es la parte dirigida del repositorio que es un DAG).
Mirando esto más - parece que la opción --ancestry-path
para git log puede hacer esto. Por ejemplo dado:
* 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
podemos obtener los todos los niños de estas dos confirmaciones utilizando
git log --oneline --ancestry-path B..E
si luego revertir esto y escoger de la primera - es decir F.
git rev-list --reverse --ancestry-path 28d08e5..006d11d | head -1
en mi caso que devuelve 3146e5d.
eso es un gráfico impresionante, ¿cómo lo hiciste? –
¿Qué pasa si hay más de un "primer" hijo común? Por ejemplo, podría haber un compromiso que es una combinación de B y E. – svick
Podría piratear la salida 'git rev-list --children' algo así como este tipo: http://stackoverflow.com/questions/1761825/referenciando-el-niño-de-un-compromiso-en-git. – ellotheth