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.:-)

¿Fue útil?

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 ejemplo master@{1} es el valor anterior inmediato de master mientras master@{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 sucursal blabla, entonces @{1} significa lo mismo que blabla@{1}.

)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top