example - ¿La vista de comparación de Github para 2 ramas es incorrecta?
git push tag (3)
¿Hay alguna forma de diferenciar la CABEZA de maestro contra la CABEZA de Rama A en Github?
[ EDIT : No, estaba equivocado. Me las arreglé para tener una URL que parecía estar haciendo lo correcto y la diferencia en la página parecía correcta, pero fue un accidente. Si realmente quieres saber más, consulta el historial de esta respuesta.]
Cuando hago una vista de comparación de Github entre el master
y otra rama A
, Github parece estar comparando la versión HEAD de A
con una versión más antigua, no principal de master
.
Lo busqué y, por lo que puedo decir, parece que Github está comparando la rama A
con un antepasado común del master
. En realidad no lo está comparando con lo que está actualmente en la HEAD
of master.
¿Hay alguna forma de diferenciar la CABEZA de maestro contra la CABEZA de Rama A
en Github?
¿Si no, porque no? Esto parece una característica que todo desarrollador querría poder hacer. ¿O hay algún proceso que debería hacerse que quizás me esté perdiendo? Me gustaría poder crear una solicitud de extracción directamente desde una de estas diferencias.
EDIT: Aquí hay un ejemplo de repositorio que muestra el problema
https://github.com/bradparks/test_github_diff_view
- Creé un nuevo repositorio que contiene un solo archivo, README.md
- Configuré este archivo para que contenga una sola línea
v100
. - Luego ramifiqué el maestro en una nueva rama
A
, y cambié la línea a `v200 '' Luego cambié el valor en la rama maestra a ''v300'', y luego comparé las 2 ramas usando el enlace de comparación
https://github.com/bradparks/test_github_diff_view/compare/A
Y veo el siguiente resultado inesperado. ¿Por qué no es diferente a
v300
lugar dev100
?
¿Hay alguna forma de diferenciar la CABEZA de maestro contra la CABEZA de Rama A en Github?
Septiembre de 2018 : sí: GitHub ahora admite explícitamente " comparaciones de diferencias de Git de tres puntos y de dos puntos ". Vea un ejemplo aquí .
Keisuke menciona en los comentarios una iniciativa similar en Bitbucket .
Respuesta original 2015:
No: como se menciona en " Vista de comparación de GitHub para versiones actuales de sucursales ", GitHub solo admite la especificación de acceso directo de rango de puntos triples (...).
Es decir:
Esta forma es para ver los cambios en la rama que contiene y hasta la segunda, comenzando en un ancestro común de ambos.
"
git diff A...B
" es equivalente a "git diff $(git-merge-base AB) B
".
Puede omitir cualquiera de, lo que tiene el mismo efecto que usar HEAD en su lugar.
La ayuda oficial de GitHub menciona esta característica como:
El uso más común de Comparar es para comparar sucursales, como cuando está iniciando una nueva Solicitud de extracción.
En ese escenario, la rama de relaciones públicas se inicia desde el maestro (o, de todos modos, se debe volver a basar en la parte superior del maestro), lo que significa que la CABEZA principal es la base entre la rama principal y la de relaciones públicas.
Pero cuando las dos ramas se han bifurcado, la comparación ya no es entre HEADs
, sino entre un ancestro común y una HEAD: git diff $(git-merge-base master B) B
Nota: incluso si tuviera que especificar dos SHA1 directamente, como está claramente documentado en " Comparing commit ", eso todavía haría un git diff $(git-merge-base AB) B
Eso no haría una diferencia directa entre los dos compromisos.
Sólo otro pensamiento. Si desea crear una solicitud de extracción desde la diferencia entre su trabajo y el jefe de la rama maestra (según la opción), entonces lo que debe hacer es primero rebasar su propia rama de la rama maestra git rebase <master>
y luego hacer la solicitud de extracción.
Pero normalmente no necesita hacer esto, Git es muy inteligente con las combinaciones y normalmente podrá agregar su trabajo a la rama maestra como quiera que se agregue, incluso si no lo hace primero.