Intento, por favor comenten que no estoy del todo seguro, pero creo que hace el trabajo.
El siguiente sólo funcionará si las ramas siguen apuntando en la punta de antes de ser fusionados en maestro, que es el caso si las ramas estaban en el mismo repo:
o [master]
|
o merged branch "great-feature" into master
|\
| o A [great-feature]
| |
o | B
| |
Si no la caso (por ejemplo, si sacó de otro repositorio) todavía puede recrearlos a mano.
En primer lugar obtener las ramas donde su compromiso son:
$ git branch -a --contains=<sha-of-B>
*master
great-feature
continuación, para cada rama obtener el número de confirmaciones que separan la cabeza a la confirmación: este es el número de líneas que git log de salida para el especificado rango:
$ git log --pretty=oneline <sha-of-B>..great-feature | wc -l
1
$ git log --pretty=oneline <sha-of-B>..master | wc -l
4
So B es lo más parecido a la gran característica, lo que significa que fue creado en ella.
Esto podría convertirse en un buen guión, siento libre para añadirlo a la respuesta (no soy bueno en esto)
Estrictamente hablando, solo es posible si la fusión se reenvía rápidamente. Si todas las fusiones se realizan con '--no-ff', entonces git también conserva el historial de la sucursal. Simplemente haz 'git log -graph $ commit_id .. HEAD' – slebetman
En general, en Git, las confirmaciones no están en las ramas, las ramas están en las confirmaciones. –