¿Existe una manera fácil de cambiar a una sucursal previamente activa?
Pregunta
Estoy usando git (de hecho, msysgit) 1.6.4 en Windows.La mayor parte del tiempo trabajo en algunas ramas de funciones.De vez en cuando, quiero volver al maestro para seleccionar una confirmación particular que hice en mi rama de funciones, generalmente porque es una corrección de errores útil que tiene sentido incluso sin la función.Mi flujo de trabajo es así: si esto es innecesariamente complicado, dímelo :-) :
git checkout -b mycoolfeaturebranch // hack away, implementing a feature and one bugfix (while I'm at it) git add file_with_bugfix.cpp git commit -m "Fixed bug 12345 // commit the bugfix git checkout master // hop over to master git cherry-pick // bring the bugfix into master
En este punto, normalmente quiero volver a mi rama de funciones para continuar trabajando en la función.Desafortunadamente, los nombres de mis ramas tienden a volverse un poco largos (como, 'mycoolfeaturebranch') y no tengo la opción de completar la pestaña del nombre de la rama git en Windows.
¿Hay tal vez algo como cd -
en shells de Unix (que salta al directorio anterior, útil para alternar entre dos directorios)?A git checkout -
sería genial.:-)
Solución
Desde $ GIT / Documentación / RelNotes-1.6.2.txt:
- "git checkout -" es una abreviatura de "git checkout @ {- 1}".
¿Ha probado?
Otros consejos
Intentar:
git checkout @{-1}
De git rev-parse:
La construcción especial
@{-<n>}
significa la enésima sucursal retirada antes de la actual.
Como lo menciona Stefan Nawe en su respuesta:
"
git checkout -
" es una abreviatura de "git checkout @{-1}
".
Aunque la sintaxis @{-1}
ha existido alrededor de 1.6.2, solo desde 1.6.2 es completamente efectivo, como Junio C.comentarios de hamano allá por febrero de 2009 (el énfasis es mío):
La sintaxis @{-1} se agregó mucho antes de que comenzara a ser hiperactivo esta ronda, pero será en 1.6.2 y se ha anunciado como "utilizable" en cualquier lugar donde se pueda usar un nombre de rama", pero en realidad no lo es.
He estado arreglando varios lugares para hacer coincidir la realidad con el reclamo.
Estoy haciendo "git merge @{-1}
" trabaja ahora.
(Nota:que difiere de @{<n>}
Una referencia seguida del sufijo @ con una especificación ordinal encerrada entre un par de llaves (p. ej.
{1}
,{15}
) para especificar el enésimo valor anterior de esa ref.
Por ejemplomaster@{1}
es el valor anterior inmediato de master mientrasmaster@{5}
es el quinto valor anterior de maestro.
Este sufijo solo se puede usar inmediatamente después del nombre de una referencia y la referencia debe tener un registro existente ($GIT_DIR/logs/).Puedes usar el
@
construya con una parte de referencia vacía para obtener un reflog de la rama actual.
Por ejemplo, si estás en la sucursalblabla
, entonces@{1}
significa lo mismo queblabla@{1}
.
)