Hacemos una revisión profunda cada posts de nuestra web con el objetivo de enseñarte siempre la información más veraz y actualizada.
Solución:
Aquí hay un truco que encontré para comparar dos ramas y mostrar cuántas confirmaciones tiene cada rama por delante de la otra (una respuesta más general a su pregunta 1):
Para local sucursales:
git rev-list --left-right --count master...test-branch
Para remoto sucursales:
git rev-list --left-right --count origin/master...origin/test-branch
Esto da una salida como la siguiente:
1 7
Esta salida significa: “En comparación con master
, test-branch
hay 7 confirmaciones por delante y 1 confirmaciones por detrás”.
También puede comparar sucursales locales con sucursales remotas, por ejemplo origin/master...master
para saber cuantos comete el local master
la sucursal está delante/detrás de su contraparte remota.
En primer lugar, para ver cuántas revisiones tiene atrasadas localmente, debe hacer un git fetch
para asegurarse de tener la información más reciente de su control remoto.
La salida predeterminada de git status
te dice cuántas revisiones estás por delante o por detrás, pero por lo general encuentro esto demasiado detallado:
$ git status
# On branch master
# Your branch and 'origin/master' have diverged,
# and have 2 and 1 different commit each, respectively.
#
nothing to commit (working directory clean)
yo prefiero git status -sb
:
$ git status -sb
## master...origin/master [ahead 2, behind 1]
De hecho, alias esto para simplemente git s
y este es el comando principal que uso para verificar el estado.
Para ver la diferencia en las “revisiones por delante” de master
puedo excluir las “revisiones posteriores” de origin/master
:
git diff master..origin/master^
Para ver la diferencia en las revisiones “detrás” de origin/master
puedo excluir las “revisiones anticipadas” de master
:
git diff origin/master..master^^
Si hay 5 revisiones por delante o por detrás, podría ser más fácil escribir así:
git diff master..origin/master~5
git diff origin/master..master~5
ACTUALIZAR
Para ver las revisiones anteriores/posteriores, la sucursal debe estar configurada para rastrear otra sucursal. Para mí, este es el comportamiento predeterminado cuando clono un repositorio remoto, y luego presiono una rama con git push -u remotename branchname
. Mi versión es 1.8.4.3, pero ha estado funcionando así desde que tengo memoria.
A partir de la versión 1.8, puede configurar la rama de seguimiento de esta manera:
git branch --track test-branch
A partir de la versión 1.7, la sintaxis era diferente:
git branch --set-upstream test-branch
Con Git 2.5+, ahora tiene otra opción para ver adelante/atrás de todas las sucursales que están configuradas para enviar a una sucursal.
git for-each-ref --format="%(push:track)" refs/heads
Ver más en “Visualización de confirmaciones de Git sin enviar”
Si te ha sido de utilidad este artículo, agradeceríamos que lo compartas con el resto seniors de esta forma nos ayudas a difundir este contenido.