2010-10-22 9 views
32

Supongamos que me ramifiqué desde mi rama principal a una rama de tema, y ​​luego hice algunas confirmaciones en mi rama de tema. ¿Hay algún comando que me diga el hash de confirmación en la rama maestra de la que se originó mi rama de tema?git cómo encontrar el hash de confirmación donde se originó la sucursal desde

Idealmente, no tendría que saber cuántos commits he hecho (tratando de evitar HEAD^5).

He buscado en Google y no he podido encontrar la respuesta. ¡Gracias!

+0

http://stackoverflow.com/questions/2706797/git-finding-what-branch-a-commit-came-from puede ser un comienzo, a pesar de que no es * exactamente * su pregunta. – VonC

+0

@VonC gracias por el enlace, no es lo que quiero, pero es un buen comienzo – brycemcd

Respuesta

32

usa git merge-base master your-branch para encontrar el mejor ancestro común entre dos ramas (generalmente el punto de ramificación).

+23

@Bryce: tenga en cuenta que si realiza algunas fusiones intermedias, esto le dará el ancestro común más reciente, no necesariamente el primer punto de ramificación. – Cascabel

+0

Esto ya no parece funcionar. Acabo de obtener la información de uso: 'uso: git merge-base [-a | --all] ...'. Supongo que agregar 'HEAD' al comando anterior daría la respuesta correcta. –

+0

¿Hay alguna opción para que el short tenga salida? git merge-base mast my_branch | git rev-parse --short HEAD –

54

Puede usar git reflog show --no-abbrev <branch name>. Será salida de todos los cambios realizados en la rama, incluyendo su creación, por ejemplo (creé rama xxx de master rama):

bdbf21b087de5aa2e78a7d793e035d8bd9ec9629 [email protected]{0}: branch: Created from master 

Tenga en cuenta que esto no es muy confiable como registros reflog pueden caducar (90 días de forma predeterminada), y parece que no hay una forma 100% confiable de hacerlo.

+0

Esta debería ser la respuesta aceptada. –

Cuestiones relacionadas