tag - tipos de etiquetas en git
¿Cómo volver al último compromiso después de verificar un compromiso anterior? (8)
Echa un vistazo a la GUI gráfica ... gitk
muestra todos los confirmaciones. A veces es más fácil trabajar gráficamente ... ^^
A veces reviso alguna versión anterior del código para examinar o probar. He visto instrucciones sobre qué hacer si deseo modificar confirmaciones anteriores, pero supongamos que no hago cambios. Después de haber terminado, por ejemplo, git checkout HEAD^
, ¿cómo puedo volver a la punta de la rama? ... git log
ya no me muestra el SHA de la última confirmación.
Encontré esta pregunta justo ahora y tengo algo que agregar
Para ir al commit más reciente:
git checkout $(git log --branches -1 --pretty=format:"%H")
Explicación:
git log --branches
muestra el registro de confirmaciones de todas las sucursales locales
-1
límite para una confirmación → confirmación más reciente
--pretty=format:"%H"
para mostrar solo el hash de confirmación
git checkout $(...)
usa la salida de subshell como argumento para el pago.
Nota:
Sin embargo, esto dará como resultado un encabezado separado (porque realizamos el pago directamente en la confirmación). Esto se puede evitar extrayendo el nombre de la rama usando sed
, como se explica a continuación.
Para ir a la rama del commit más reciente:
git checkout $(git log --branches -1 --pretty=format:''%D'' |sed ''s/HEAD -> /|tag: [^,]*/|,.*//g'')
Explicación:
git log --branches
muestra el registro de confirmaciones de todas las sucursales locales
-1
límite para una confirmación → confirmación más reciente
--pretty=format:"%D"
para mostrar solo los nombres de referencia
|sed ''s/HEAD -> /|tag: [^,]*/|,.*//g''
ignora HEAD, etiqueta y extrae el primero de varios nombres de rama
git checkout $(...)
usa la salida de subshell como argumento para el pago.
Nota:
Esto siempre usará solo el primer nombre de rama si hay múltiples para ese compromiso.
De todos modos, creo que la mejor solución sería mostrar los nombres de referencia para el compromiso más reciente para saber dónde realizar el pago para:
git log --branches -1 --pretty=format:''%D''
Por ejemplo, crea el alias git top
para ese comando.
Puedes usar uno de los siguientes comandos de git para esto:
git checkout master
git checkout branchname
Si sabe que la confirmación a la que desea regresar es el jefe de alguna rama, o está etiquetado, puede simplemente
git checkout branchname
También puede usar git reflog
para ver qué otros compromisos ha señalado su HEAD (o cualquier otra referencia) en el pasado.
Editado para añadir:
En las versiones más recientes de Git, si solo ejecutó git checkout
u otra cosa para mover su HEAD
una vez, también puede hacerlo
git checkout -
para volver a donde estaba antes de la última compra. Esto fue motivado por la analogía con el lenguaje de shell cd -
para volver al directorio de trabajo en el que se encontraba anteriormente.
Si su última confirmación está en la rama maestra, simplemente puede usar
git checkout master
Si tiene una rama diferente a la maestra, una forma fácil es revisar esa rama y luego revisar la maestra. Voila, estás de vuelta en la punta del maestro. Probablemente hay formas más inteligentes ...
git checkout master
El maestro es el tip, o el último commit. gitk solo te mostrará dónde estás en el árbol en ese momento. git reflog mostrará todas las confirmaciones, pero en este caso, solo desea la sugerencia, así que git checkout master.
git reflog //find the hash of the commit that you want to checkout
git checkout <commit number>>