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, así que hice 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 sé el hash para ello. Cuando escribo git log
, no lo veo.
¿Cómo puedo hacer esto? Además, ¿hay una manera más fácil de cambiar las versiones que escribiendo hashes, algo así como "retroceder dos versiones" o "ir a la cronológicamente más reciente"?
fuente
git checkout master
es exactamente como cambio de una rama. Entonces, ¿eso significa que cuando reviso una versión anterior, esencialmente estoy creando una rama?git log
se mostrará en relación con ese punto? ¿Y cuando pago el master, muevo el puntero a la última versión de la rama master?git checkout
es una forma de mover la CABEZA. Cuando separó HEAD, lo hizo apuntar directamente a ese commit dado; cuando revisa master nuevamente, señala de nuevo a master. (Y muchos comandos comogit log
realmente toman un rango de revisión, que por defecto es HEAD.)Cuando finaliza la compra en una confirmación específica, git crea una rama separada. Entonces, si llamas:
Verás algo como:
Para volver al jefe de la sucursal maestra, solo necesita volver a pagar a su sucursal maestra:
Este comando eliminará automáticamente la rama separada.
Si
git checkout
no funciona, es probable que haya modificado archivos en conflicto entre ramas. Para evitar que pierdas el código, git requiere que manejes estos archivos. Tienes tres opciones:Guarde sus modificaciones (puede reventarlas más tarde):
Descarte los cambios que restablecen la rama separada:
Cree una nueva rama con las modificaciones anteriores y comprométalas:
Después de esto , puede volver a su rama maestra (versión más reciente):
fuente
Esto me sirvió (todavía estaba en la rama maestra):
fuente
Para volver a la última versión:
Por ejemplo,
git checkout master
ogit checkout dev
fuente
Puede consultar el uso de nombres de sucursales, por un lado.
Sé que hay varias formas de mover la CABEZA, pero dejaré que un experto en git las enumere.
Solo quería sugerir
gitk --all
: lo encontré enormemente útil cuando comencé con git.fuente
Estoy empezando a profundizar en Git, así que no sé si he entendido bien, pero creo que la respuesta correcta a la pregunta de la OP es que puede funcionar
git log --all
con una especificación de formato de la siguiente manera:git log --all --pretty=format:'%h: %s %d'
. Esto marca la versión actual retirada(HEAD)
y puedes simplemente tomar la siguiente de la lista.Por cierto, agregue un alias como este
.gitconfig
con un formato un poco mejor y puede ejecutargit hist --all
:Con respecto a las versiones relativas, encontré esta publicación , pero solo habla de versiones anteriores, probablemente no haya nada para referirse a las versiones más nuevas.
fuente
Algunas de las respuestas aquí suponen que está en la rama maestra antes de decidir pagar una confirmación anterior. Este no es siempre el caso.
Te volverá a señalar la rama en la que estabas anteriormente (independientemente de si era maestra o no).
fuente
git checkout hash2
despuésgit checkout hash1
,git checkout -
te llevará de vuelta ahash1
.Cuando vuelves a una versión anterior,
Puede ver su registro de características (hash) con este comando incluso en esta situación;
master
se puede reemplazar con otro nombre de sucursal.Luego, pruébelo, podrá volver a la función.
fuente
Con Git 2.23+ (agosto de 2019), la mejor práctica sería usar en
git switch
lugar de lo confusogit checkout
comando .Para crear una nueva sucursal basada en una versión anterior:
Para volver a la rama maestra actual:
fuente
Una solución más elegante y simple es usar
Volverá a la versión local más reenviada de la rama y también guardará sus cambios en el alijo, así que si desea deshacer esta acción, haga lo siguiente:
fuente