Muy un comando de porcelana, no es bueno si quieres esto para scripting:
git branch -vv # doubly verbose!
Tenga en cuenta que con git 1.8.3, esa rama ascendente se muestra en azul (consulte " ¿Qué es el seguimiento de esta rama (si hay algo) en git? ")
Si desea una salida limpia, vea la respuesta de arcresu : utiliza un comando de porcelana que no creo que existiera en el momento en que escribí originalmente esta respuesta, por lo que es un poco más conciso y funciona con ramas configuradas para rebase, no solo fusión.
git remote show originReemplace 'origen' con el nombre de su control remoto.
fuente
git remote showcomando realmente se conecta al repositorio remoto ... y por lo tanto se produce un error si le toca estar fuera de línea o no puede conectar con el repositorio por cualquier razón ...git remote show -n originpara obtener información incluso cuando está desconectado. De la documentación de git remote : "Con la opción -n, los cabezales remotos no se consultan primero con git ls-remote <nombre>; en su lugar, se usa la información en caché".git remote show | xargs git remote show -npara ver información de seguimiento combinada para todos los controles remotos.Si observa la página de manual
git-rev-parse, verá que se describe la siguiente sintaxis:Por lo tanto, para encontrar el flujo ascendente de la rama
master, haría:Para imprimir la información de cada rama, puede hacer algo como:
Esto es más limpio que analizar referencias y configuraciones manualmente.
fuente
done < <(git for-each-ref --format='%(refname:short)' refs/heads/**)Tenga en cuenta los dos asteriscos al final del patrón global.git rev-parse --abbrev-ref HEAD@{upstream}parece funcionar bien para la rama actual. También es un buen alias de git.whilesintaxis del bucle me parece un poco extraña. Puede usar elgit for-each-ref ... | while read branch; do ...que no necesita un FIFO y se ejecuta en el mismo orden que los comandos escritos.git for-each-ref --format='%(refname:short) tracks %(upstream:short)' refs/heads/*Una alternativa a la respuesta de kubi es echar un vistazo al
.git/configarchivo que muestra la configuración del repositorio local:cat .git/configfuente
git config --get-regex branchmostrará una línea para cada sucursal local. Una rama de seguimiento se verá así:
Una que no sea de seguimiento se verá así:
fuente
git branch -vv. 🙏git config --global alias.track 'for-each-ref --format='\''%(refname:short) <- %(upstream:short)'\'' refs/heads'Para la rama actual , aquí hay dos buenas opciones:
o
Esa respuesta también está aquí , a una pregunta ligeramente diferente que fue marcada (erróneamente) como un duplicado.
fuente
git for-each-ref --shell --format='%(refname:short) %(upstream:short)' refs/heads.Para la rama actual, también podría decir
git checkout(sin ninguna rama). Este es un no-op con efectos secundarios para mostrar la información de seguimiento, si existe, para la rama actual.fuente
git checkout ., lo que no es un no-op.Yo uso este alias
entonces
fuente
Basado en la respuesta de Olivier Refalo
Muestra solo local con la pista configurada.
Escríbalo en un script llamado git-track en su ruta y obtendrá un comando git track
Una versión más elaborada en https://github.com/albfan/git-showupstream
fuente
git config --get-regexp "branch\.$current_branch\.remote"le dará el nombre del control remoto que se está rastreando
git config --get-regexp "branch\.$current_branch\.merge"le dará el nombre de la rama remota que se está rastreando.
Deberá reemplazar $ current_branch con el nombre de su sucursal actual. Puede obtener eso dinámicamente con
git rev-parse --abbrev-ref HEADEl siguiente mini script combina esas cosas. Péguelo en un archivo llamado
git-tracking, hágalo ejecutable y asegúrese de que esté en su camino.entonces puedes decir
tenga en cuenta que el nombre de la sucursal remota puede ser diferente del nombre de su sucursal local (aunque generalmente no lo es). Por ejemplo:
Como puede ver en el código, la clave para esto es extraer los datos de la configuración de git. Solo uso sed para borrar los datos extraños.
fuente
Aquí hay uno simple y ordenado. Puede verificar
git remote -v, que le muestra todo el origen y el flujo ascendente de la rama actual.fuente