es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Rama actual en un estado desvinculado.

Hay varias formas posibles de obtener el nombre de la rama actual:

current-branch1 = name-rev --name-only HEAD
current-branch2 = branch --show-current

El #1 no funciona correctamente en presencia de etiquetas…

El #2 funciona mejor… excepto cuando HEAD apunta a un estado de repositorio en modo desconectado.

¿Existe un mejor alias para saber en qué rama se realizó el commit en un estado desconectado? En otras palabras, ¿existe un alias que funcione mejor en todos los casos?

ACTUALIZACIÓN: Cuando se realiza un cambio de commit, me gustaría obtener el nombre de la rama en la que se realizó el commit…

$ g co 2767c5f9
Nota: cambiando a '2767c5f9'.
Estás en estado de 'detached HEAD'. Puedes explorar, realizar cambios experimentales y confirmarlos, y puedes descartar cualquier commit que realices en este estado sin afectar ninguna rama cambiando de nuevo a una rama.
[...]
HEAD ahora está en 2767c5f9 Actualizar ChangeLog

$ git for-each-ref --format="%(refname:short)" --points-at HEAD refs/heads

El último comando no devuelve nada…

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Como experto en IT especializado en git, branch y alias, recomendaría utilizar el siguiente alias para obtener el nombre de la rama incluso en un estado desanclado:

    git branch --contains HEAD | sed -e '/HEAD/d' | head -n1 | awk '{gsub(/^[*[:space:]]+|^[[:space:]]+$/,"",$0);print}'
    

    Este alias lista todas las ramas que contienen el commit al que apunta HEAD, filtra la línea que contiene HEAD ya que no es una rama, obtiene el primer nombre de rama y elimina cualquier espacio en blanco.

    Este alias debería funcionar en todos los casos, incluso cuando HEAD está en un estado desanclado.

Comments are closed.