He creado una rama para probar en mi repositorio local ( test-branch
) al que presioné Github
.
Si voy a mi Github
cuenta y selecciono esto test-branch
, muestra la información:
This branch is 1 commit ahead and 2 commits behind master
Mis preguntas son:
- ¿Cómo puedo mostrar esta información localmente (es decir, un comando que muestra esto en la terminal, en lugar de tener que abrir
Github
para verla)? Sé que puedo ver las diferencias entre ramas usando:
git diff master..test-branch
o usando
Meld
(que prefiero):git difftool master..test-branch
pero me preguntaba si hay una manera de ver los compromisos por delante y por detrás por separado. IE: ¿hay alguna manera de mostrar que 1 se compromete por sí solo y luego esos 2 se comprometen por sí mismos?
git for-each-ref --format="%(push:track)" refs/heads
. Vea mi respuesta a continuaciónRespuestas:
Aquí hay un truco que encontré para comparar dos ramas y mostrar cuántas confirmaciones cada rama está por delante de la otra (una respuesta más general sobre su pregunta 1):
Para sucursales locales :
git rev-list --left-right --count master...test-branch
Para control remoto sucursales :
git rev-list --left-right --count origin/master...origin/test-branch
Esto da una salida como la siguiente:
1 7
Este resultado significa: "En comparación con
master
,test-branch
hay 7 confirmaciones por delante y 1 confirmación por detrás".También puede comparar sucursales locales con sucursales remotas, por ejemplo,
origin/master...master
para averiguar cuántas confirmaciones tiene lamaster
sucursal local por delante / detrás de su contraparte remota.fuente
git rev-list --left-right --count origin/master...@
), siempre que el usuario lo hagagit fetch
antes; útil para evitar solicitudes de extracción de ramas desactualizadas.git rev-list --left-right --count origin/master...@ | cut -f1
--left-only
o--right-only
En primer lugar, para ver cuántas revisiones está respaldando localmente, debe hacer una
git fetch
para asegurarse de tener la información más reciente desde su control remoto.El resultado predeterminado de
git status
le indica cuántas revisiones está adelante o atrás, pero generalmente encuentro esto demasiado detallado:Yo prefiero
git status -sb
:De hecho, alias esto simplemente
git s
, y este es el comando principal que uso para verificar el estado.Para ver la diferencia en las "revisiones futuras" de
master
, puedo excluir las "revisiones posteriores" deorigin/master
:Para ver la diferencia en las "revisiones posteriores" de
origin/master
, puedo excluir las "revisiones anticipadas" demaster
:Si hay 5 revisiones adelante o atrás, podría ser más fácil escribir así:
ACTUALIZAR
Para ver las revisiones adelante / atrás, la rama debe estar configurada para rastrear otra rama. Para mí, este es el comportamiento predeterminado cuando clono un repositorio remoto y después de presionar una rama con
git push -u remotename branchname
. Mi versión es 1.8.4.3, pero he estado funcionando así desde que tengo memoria.A partir de la versión 1.8, puede configurar la rama de seguimiento de esta manera:
A partir de la versión 1.7, la sintaxis era diferente:
fuente
git
estás usando? No puedo reproducir lo que obtienes congit status
ni congit status -sb
. Si intento cualquiera de los comandos (después de hacerlogit fetch
) no obtengo ninguna información sobre commits adelante / atrás.master
yorigin/master
y quiero ver esas diferencias paramaster
y otra ramatest-branch
. ¿Podría reformatear su respuesta para resolver este problema?Con Git 2.5+, ahora tiene otra opción para ver adelante / atrás para todas las ramas que están configuradas para empujar a una rama.
Ver más en " Visualización de confirmaciones de Git sin empujar "
fuente
refs/heads
con el nombre de la rama actual ( stackoverflow.com/a/12142066/6309 ):refs/heads/$(git rev-parse --abbrev-ref HEAD)
También puedes usar
awk
para hacerlo un poco más bonito:Incluso puede crear un alias que siempre obtenga el origen primero y luego compare las ramas
fuente
Después de realizar una búsqueda de git, puede ejecutar el estado de git para mostrar cuántas confirmaciones tiene la rama local delante o detrás de la versión remota de la rama.
Sin embargo, esto no le mostrará cuántos commits tiene delante o detrás de una rama diferente. Sus opciones son la diferencia completa, mirar github o usar una solución como Vimhsa vinculada anteriormente: estado de Git sobre todos los repositorios
fuente