Como que quiero el equivalente de cd -git. Si estoy en una sucursal mastery finalizo la compra foo, me encantaría poder escribir algo como git checkout -volver mastery 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}; donegit 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 checkoutmanual:Por lo tanto
git checkout -, ygit checkout @{-1}funcionaría en este casoLo más cercano que creo es usargit reflogy analizar lo últimomoving from branch1 to branch2ygit checkout branch1fuente
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 reflogbú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.23introdujo elgit switchcomando 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
gcocomo 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 checkoutoperación".Para el
<branch>argumento degit checkout"también puede especificar '-', que es sinónimo de '@{-1}'".fuente