Git checkout <SHA> y Heroku

Creé un repository local de Git en mi computadora portátil y luego inserté la fuente en Heroku para crear una sucursal remota. Después de unos días de commits y push, necesito retroceder a una confirmación anterior. Esto es lo que hice.

cd <app root> git checkout 35fbd894eef3e114c814cc3c7ac7bb50b28f6b73 

Alguien me dijo que al hacer el pago creó un nuevo tree de trabajo y no la twig en sí, así que cuando presioné los cambios de restitución a Heroku, dijo que todo estaba actualizado y que no se había hecho nada. ¿Cómo soluciono esta situación? Gracias por su ayuda con anticipación.

Cuando finaliza la compra de un nombre de confirmación directa (utilizando el hash SHA-1 del object de confirmación) en lugar de verificar el nombre de una twig, termina con un "HEAD separado". HEAD es el "ref" que realiza un seguimiento de lo que está actualmente desprotegido. Se desconecta cuando pagas directamente una confirmación en lugar de una sucursal (no está asociada a ninguna sucursal). No se actualizan las twigs cuando se separa el HEAD de un repository. Puede pensar en el estado de cabeza separada como si tuviera una twig anónima desprotegida.


Para volver a adjuntar HEAD de su repository, querrá save el HEAD actual como una bifurcación y verificar esa ramificación:

  1. Para save el HEAD actual en una nueva twig, haga esto:

     git branch <new-branch-name> 
  2. Para sobrescribir una twig existente necesita usar --force :

     git branch --force <existing-branch-name> 
  3. Luego, vuelva a conectar la CABEZA de su repository revisando la twig nueva / actualizada:

     git checkout <branch-name> 

    (donde <branch-name> es lo mismo que <new-branch-name> o <existing-branch-name> , dependiendo de cuál de los dos commands anteriores utilizó)

Esta secuencia ( git branch para hacer un punto de reference al HEAD commit actual, luego git checkout esa twig actualizada) transportará cualquier contenido no asignado que pueda tener en su índice y / o tree de trabajo.


En el futuro, si quiere 'retrotraer' la twig actual a alguna confirmación previa, debe usar esto en lugar de separar la CABEZA de su repository:

 git reset --hard <commit> 

Esto restablecerá la twig actual (o su HEAD desconectado, si ya está separada) a la confirmación nombrada, y hará que el índice y el tree de trabajo reflejen esa confirmación (es decir, descarta cualquier confirmación desde la confirmación especificada junto con cualquier contenido no confirmado) )

El estado separado HEAD es útil para revisar estados antiguos, y algunas veces para trabajos a corto ploop que no estás seguro de que mantengas. Aparte de eso, probablemente quieras evitarlo.

Desea restablecer:

 git reset --hard 35fbd894eef3e114c814cc3c7ac7bb50b28f6b73