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 git checkout HEAD^
, por ejemplo , ¿cómo vuelvo a la punta de la rama? ... git log
ya no me muestra el SHA de la última confirmación.
git
version-control
Leo Alekseyev
fuente
fuente
git log
oración de su pregunta, siempre puede ejecutargit log --all
(o más útilmentegit log --oneline --graph --all
).Respuestas:
Si sabe que la confirmación a la que desea regresar es la cabeza de alguna rama, o está etiquetada, entonces puede simplemente
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 agregar:
En las versiones más recientes de Git, si solo corriste
git checkout
o alguna otra cosa para mover unaHEAD
vez, también puedes hacerpara volver a donde estaba antes del último pago. Esto fue motivado por la analogía con el idioma de shell
cd -
para volver al directorio de trabajo en el que se encontraba anteriormente.fuente
master
en realidad no es ningún tipo de palabra clave, la formaHEAD
es. Es solo el nombre de rama predeterminado en un nuevo repositorio. Puede ejecutargit branch
para obtener una lista de ramas en su repositorio ygit tag -l
para obtener una lista de etiquetas. Del mismo modo,origin
es el nombre predeterminado del control remoto desde el que se clona un repositorio, pero no tiene nada de especial.git reflog
le da una lista de hashes, en cuyo punto puede usargit checkout [commit-hash]
.git checkout master
master es la punta, 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 quieres la sugerencia, así que git checkout master.
fuente
git checkout branchname
Encontré esta pregunta hace un momento y tengo algo que agregar
Para ir a la confirmación más reciente:
Explicación:
git log --branches
muestra el registro de confirmaciones de todas las sucursales locales,-1
limita a una confirmación → el--pretty=format:"%H"
formato de confirmación más reciente para mostrar solo lagit checkout $(...)
salida de uso de hash de confirmación de subshell como argumento para el pagoNota:
Sin embargo, esto dará como resultado una cabeza separada (porque pagamos directamente al commit). Esto se puede evitar extrayendo el nombre de la rama utilizando
sed
, como se explica a continuación.Para ir a la rama de la confirmación más reciente:
Explicación:
git log --branches
muestra el registro de confirmaciones de todas las ramas locales,-1
limita a una confirmación → el--pretty=format:"%D"
formato de confirmación más reciente para mostrar solo los nombres de referencia| sed 's/.*, //g'
ignora todas menos las últimas referencias (*)git checkout $(...)
usa la salida de la subshell como argumento para el pago*) HEAD y las ramas remotas se enumeran primero, las ramas locales se enumeran en último lugar en orden alfabético descendente, por lo que el restante será el primer nombre de la rama alfabéticamente
Nota:
Esto siempre usará el nombre de la primera rama (alfabéticamente) si hay múltiples para esa confirmación.
De todos modos, creo que la mejor solución sería mostrar los nombres de referencia para la confirmación más reciente para saber dónde realizar el pago:
Por ejemplo, cree el alias
git top
para ese comando.fuente
alias git-head='git checkout $(git log --branches -1 --pretty=format:"%D" | sed "s/.*, //g")'
Eche un vistazo a la GUI gráfica ...
gitk
muestra todos los commits. A veces es más fácil trabajar gráficamente ... ^^fuente
Puede usar uno de los siguientes comandos git para esto:
fuente
muestra todas las ramas y confirma
git log --branches --oneline
muestra el último registro de confirmación de
git - ramas -1 --en línea
mostrar antes del último commit
git log --branches -2 --oneline
fuente
fuente
Si tiene una rama diferente a la maestra, una manera fácil es verificar esa rama y luego verificar la maestra. Voila, estás de vuelta en la punta del maestro. Probablemente hay formas más inteligentes ...
fuente
Simplemente puedes hacer
git pull origin branchname
. Recuperará el último commit nuevamente.fuente
Si su último commit está en la rama maestra, simplemente puede usar
fuente