¿Hay alguna forma de generar el nombre de la rama de git anterior?

2 minutos de lectura

Avatar de usuario de Henry Blyth
henry blyth

Esta respuesta le indica cómo realizar el pago en la sucursal anterior y explica de manera útil @{-1}: https://stackoverflow.com/a/7207542/3150057

La rama anterior es importante si escondí algo de código antes de cambiar de rama y ahora estoy pensando en trabajar en el alijo.

¿Hay alguna manera de ver rápidamente el nombre de la sucursal anterior sin buscar? git reflog show para lo último checkout: moving from foo to bar ¿entrada?


Más información:

Esta es una solución a mi olvido de mi contexto de trabajo anterior, que suele ocurrir después de volver del almuerzo.

git rev-parse @{-1} muestra la confirmación HEAD de la rama que sería desprotegida por git checkout - pero no el nombre de la sucursal.

git branch --contains @{-1} enumerará cada rama con ese compromiso.

Sería útil enumerar las sucursales con ese compromiso como HEAD, ya que podría ayudarme a recordar mi contexto de trabajo anterior, pero no estoy seguro de cómo hacerlo.

Si solo quieres el nombre, puedes usar:

git name-rev $(git rev-parse @{-1}) --name-only

Así por ejemplo:

$ git checkout mybranch
$ git checkout master
$ git name-rev $(git rev-parse @{-1}) --name-only
> mybranch

Es preferible a la respuesta aceptada porque no muestra “cabezas” en el nombre, por lo que se puede encadenar con otros comandos de git.

  • ¡Lindo! git name-rev @{-1} --name-only también funciona

    – byohay

    13 de enero de 2021 a las 9:25

Tal vez esto es lo que quieres:

git describe --all $(git rev-parse @{-1})

Desde el git-describe página man:

--all

En lugar de usar solo las etiquetas anotadas, use cualquier referencia que se encuentre en refs/ namespace. Esta opción permite hacer coincidir cualquier rama conocida, rama de seguimiento remoto o etiqueta ligera.

Entonces, por ejemplo, si hago esto:

$ git checkout mybranch
$ git checkout master
$ git describe --all $(git rev-parse @{-1})

Veo:

heads/mybranch

  • Eso lo hace, gracias! pude usar git describe --all @{-1} y obtuve el mismo resultado.

    –Henry Blyth

    4 de noviembre de 2016 a las 15:18

  • Conseguir fatal: Not a valid object name @{-1} 🙁

    – Colgado

    1 de diciembre de 2017 a las 6:10

  • @{-1} se refiere a “la rama/confirmación desprotegida antes de la actual”. Si solo ha usado una sola rama (p. ej., master), entonces no hay una “rama anterior” y obtendrá el error que describe. Intentar git checkout -b testbranch y luego ver a qué @{-1} se refiere.

    – alondras

    1 de diciembre de 2017 a las 13:06

¿Ha sido útil esta solución?