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 origin
Reemplace 'origen' con el nombre de su control remoto.
fuente
git remote show
comando 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 origin
para 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 -n
para 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.while
sintaxis 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/config
archivo que muestra la configuración del repositorio local:cat .git/config
fuente
git config --get-regex branch
mostrará 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 HEAD
El 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