2012-02-20 13 views
19

En github, cuando veo una confirmación, me muestra el mensaje de confirmación y los cambios, junto con los comentarios en la parte inferior. Sin embargo, no me dice en qué rama se registró la confirmación. Incluso si 'Examino el código', está explorando el código para un 'árbol' en particular (presumiblemente el estado del código cuando se realizó la confirmación), en lugar de buscar una rama en particular.¿Cómo decir para qué rama era una confirmación github?

Sé que las confirmaciones en git no están intrínsecamente vinculadas a una sucursal, pero sin duda se son que siempre van a comprometerse primero en una sucursal en particular? ¿No está etiquetada la confirmación con esa rama, y ​​puedo ver qué rama era de alguna manera?

+0

Tal vez se puede decir de fusión posterior se compromete? De lo contrario, no estoy al tanto de ninguna forma de hacerlo; una rama es solo una referencia a un compromiso y se supone que es transitoria. –

+2

Me parece que la vista de commit de github es de muy poco uso debido al problema. Otra característica que falta son los enlaces a todas las confirmaciones secundarias (incluso clones cruzados). Para su problema, github debería vincular todas las ramas, que están enumeradas por 'git branch --contains '. –

+0

En cuanto a la rama a la que se comprometió originalmente, me inclino a la posición de que es bastante inútil saberlo porque puede haber sido una rama de función local multiplexada que nadie haya visto nunca. Y no está registrado de todos modos. –

Respuesta

10

Bien, la respuesta a esta pregunta, fundamentalmente, es: no hay una forma definitiva de decirlo. Las etiquetas de Mercurial en realidad se comprometen con el nombre de la rama a la que se registraron, pero git simplemente no las incluye; aparentemente, no se considera importante cuál era el nombre de la sucursal. Esta fue una decisión de diseño y no parece que va a cambiar.

3

Si se trata de una confirmación bastante reciente, puede ir a su gráfico de red (por ejemplo, https://github.com/BenHocking/ShortCircuitGA/network) y colocar el cursor sobre cada nodo en una rama hasta encontrar la confirmación que está buscando. No es eficiente, pero es la única forma en que sé cómo hacerlo directamente desde GitHub. (Si usted tiene SourceTree, GitX, u otros clientes de Git visuales, puede haber otras alternativas, así como alternativas de línea de comandos.)

+0

Eso funciona bastante bien. Todavía no sé por qué las confirmaciones no se etiquetan automáticamente con el nombre de la rama en el que se están registrando; eso podría ser realmente útil, especialmente para un compromiso antiguo. – Jez

+0

Frecuentemente pongo una serie de confirmaciones en una sucursal local mientras estoy trabajando en una función, y fusiono esa rama en el enlace troncal y la presiono cuando finaliza. Entonces, esos commits serían etiquetados con un nombre de rama que no significaba nada para nadie y podría entrar en conflicto con otras sucursales locales, o incluso con un nombre de sucursal remota. – Useless

4

De git help branch:

Con --contains, muestra única las ramas que contienen la confirmación nombrada (en otras palabras, las ramas cuya sugerencia se entrega son descendientes de la confirmación nombrada).

Con --mermado, solo se enumerarán las ramas fusionadas en la confirmación con nombre (es decir, las ramas cuyas confirmaciones de punta son alcanzables a partir de la confirmación nombrada).

Con --no fusionadas solo las ramas no fusionadas en la confirmación nombrada se mostrarán. Si el argumento falta, el valor predeterminado es HEAD (es decir, la punta de la rama actual).

1

Comience a enviar una solicitud de extracción para la confirmación. Verá la rama fuente predeterminada en el lado "desde".

0

Esta respuesta no ayudará con los registros previos, pero utilizo el siguiente script de enlace commit-msg para anexar la rama actual a cada mensaje de confirmación.

#!/bin/sh 
# 
export BRANCH=`git status | head -1 | cut -c13-` 
echo -n "($BRANCH) - " > .git/tmp-msg 
cat $1 >> .git/tmp-msg 
mv .git/tmp-msg $1 

exit 0 
7

Si conoce el número de comprometerse, puede simplemente hacer esto

git branch --contains <commit>

Esto debe darle el nombre de la sucursal en la que la confirmación fue hecha.

ACTUALIZACIÓN: En GitHub específicamente, ahora puede ver la rama de la que forma parte una confirmación determinada. La publicación de blog "Etiquetas de rama y etiqueta para confirmar páginas" detalles:

Si la confirmación no está en la rama predeterminada, el indicador mostrará las ramas que contienen la confirmación. Si la confirmación es parte de una solicitud de extracción no fusionada, se mostrará un enlace.

enter image description here

+0

O si también desea ver las sucursales remotas: git branch -a --contiene

Cuestiones relacionadas