Recientemente me mudé de SVN a Git y estoy un poco confundido acerca de algo. Necesitaba ejecutar la versión anterior de un script a través de un depurador, por lo que hice el git checkout <previous version hash>
e hice lo que tenía que hacer.
Ahora quiero volver a la versión más nueva, pero no conozco el hash. Cuando git log
, no lo veo.
¿Cómo puedo hacer esto? Además, ¿hay alguna manera más fácil de cambiar versiones que escribiendo hashes, algo así como "retroceder dos versiones" o "ir a la más reciente cronológicamente"?
git checkout master
debería hacer el truco. Para retroceder dos versiones, podría decir algo como git checkout HEAD~2
, pero es mejor crear una twig temporal basada en ese momento, entonces git checkout -b temp_branch HEAD~2
Cuando finaliza la compra de un compromiso específico, git crea una sucursal separada. Entonces, si llamas:
$ git branch
Verás algo como:
* (detached from 3i4j25) master other_branch
Para volver a la cabecera principal, solo tiene que volver a realizar el pago en su twig principal:
$ git checkout master
Este command eliminará automáticamente la twig separada.
Si el git checkout
no funciona, probablemente haya modificado los files que entran en conflicto entre las twigs. Para evitar que pierdas código, git requiere que manejes estos files. Tienes tres opciones:
Guarde sus modificaciones (puede mostrarlas más tarde):
$ git stash
Deseche los cambios restableciendo la twig separada:
$ git reset --hard
Crea una nueva twig con las modificaciones anteriores y comprométalas:
$ git checkout -b my_new_branch $ git add my_file.ext $ git commit -m "My cool msg"
Después de esto , puede volver a su twig principal (versión más reciente):
$ git checkout master
Esto hizo el truco para mí (todavía estaba en la twig principal):
git reset –hard origin / master
Estoy empezando a profundizar en git, por lo que no estoy seguro si entiendo correctamente, pero creo que la respuesta correcta a la pregunta de OP es que puedes ejecutar git log --all
con una especificación de formatting como esta: git log --all --pretty=format:'%h: %s %d'
. Esto marca la versión actual desprotegida como (HEAD)
y puede get la siguiente de la list.
Por cierto, agrega un alias como este a tu .gitconfig
con un formatting ligeramente mejor y puedes ejecutar git hist --all
:
hist = log --pretty=format:\"%h %ai | %s%d [%an]\" --graph
En cuanto a las versiones relativas, encontré esta publicación , pero solo habla de versiones anteriores, probablemente no haya nada que haga reference a las versiones más recientes.
Para empezar, puedes consultar usando nombres de twigs.
Sé que hay varias maneras de mover la CABEZA, pero dejaré que un experto en git las enumere.
Solo quería sugerir gitk --all
Me pareció enormemente útil cuando comencé con git.
Cuando vuelves a una versión anterior,
$ git checkout HEAD~2 Previous HEAD position was 363a8d7... Fixed a bug #32
Puede ver su logging de funciones (hash) con este command incluso en esta situación;
$ git log master --oneline -5 4b5f9c2 Fixed a bug #34 9820632 Fixed a bug #33 ...
master
puede ser reemplazado con otro nombre de twig.
Luego, agréguelo, podrá volver a la function.
$ git checkout 4b5f9c2 HEAD is now at 4b5f9c2... Fixed a bug #34
Una solución más elegante y simple es usar
git stash
Volverá a la versión local más resentida de la twig y también saveá los cambios en el alijo, por lo que si desea deshacer esta acción, haga lo siguiente:
git stash apply
Para volver a la última versión:
git checkout <branch-name>
Por ejemplo, git checkout master
o git checkout dev