Como que quiero el equivalente de cd -
git. Si estoy en una sucursal master
y finalizo la compra foo
, me encantaría poder escribir algo como git checkout -
volver master
y poder escribirlo nuevamente para volver foo
.
¿Existe algo como esto? ¿Sería difícil de implementar?
git
git-checkout
Matt Briggs
fuente
fuente
gc-
o fue esa abreviatura paragit checkout -
Respuestas:
De las notas de la versión 1.6.2
y
fuente
error: pathspec '@-' did not match any file(s) known to git. error: pathspec '@1' did not match any file(s) known to git.
@{u}
, que es la rama aguas arriba de la rama actual. Es muy útil, por ejemplo, paragit log @{u}..
qué listas de confirmaciones anteriores no se han extraído todavía. Y lo contrario,git log ..@{u}
que son solo los compromisos locales que aún no se han presionado.La forma más sencilla de hacer esto hoy en día es:
... que es un alias de:
Si quieres saber más sobre esto, escribí un artículo completo al respecto aquí: Mira la rama anterior en Git .
fuente
for i in{1..10}; do git rev-parse --symbolic-full-name @{-$i}; done
git reflog | ? { $_ -match ': checkout: moving from (.*) to (.*)'} | % { $Matches[1] }
. En bash tienes que escribir algo equivalente (obtener reflog y filtrarlo a líneas que contengan la cadena ": checkout:" y luego extraer el nombre de la rama). Esto es realmente lo que hace gitComo @Karl señala y del
git checkout
manual:Por lo tanto
git checkout -
, ygit checkout @{-1}
funcionaría en este casoLo más cercano que creo es usargit reflog
y analizar lo últimomoving from branch1 to branch2
ygit checkout branch1
fuente
Simplemente agregue algunos detalles más a las respuestas anteriores para comprender el mecanismo por el cual
git checkout @{-N}
funciona. Recorre el registro para inspeccionar el historial de pago, por lo que si desea implementar algo similar por su cuenta, debería poder analizar el resultado de lagit reflog
búsqueda decheckout:
líneas. Puede verificar la implementación en la fuente gitsha1_name.c
, específicamente la funcióninterpret_nth_prior_checkout
.fuente
La versión de Git
2.23
introdujo elgit switch
comando que puedes usar para hacer eso (y más). Citando la documentación oficial:En su caso específico, puede emitir
git switch -
para volver a la sucursal en la que estaba anteriormente. Puede ejecutar el mismo comando nuevamente para regresar a la primera rama.PD: No es que aún no sepas cómo hacerlo (quiero decir, han pasado 7 años desde que hiciste esta pregunta), pero este comando es menos confuso y amigable para los principiantes, ya que aborda una confusión común que surge cuando se usa
git checkout
.fuente
Llegué a esta pregunta con el mismo pensamiento para verificar mi rama anterior. Estoy usando ohmyz en
Mac
. El siguiente comando me ayudó.fuente
gco
como una forma corta de escribirgit checkout
. Así quegco -
solo llamagit checkout -
.git checkout -
. para a prueba de fallos actualizado.La solución más popular es:
Donde N - paso cuenta de las ramas para retroceder en el historial de pago.
fuente
Aquí hay indicadores de las partes de la documentación de Git que describen
git checkout -
y lasgit checkout @{-1}
soluciones dadas por las otras respuestas:Cuando se especifica una revisión Git para cualquier comando,
@{-<n>}
, por ejemplo,@{-1}
significa “el n º rama / COMMIT desprotegido antes de la actual.” La documentación paragit checkout <branch>
reitera: "Puede usar la@{-N}
sintaxis para referirse a la N-ésima última rama / confirmación extraída mediante lagit checkout
operación".Para el
<branch>
argumento degit checkout
"también puede especificar '-
', que es sinónimo de '@{-1}
'".fuente