Cómo actualizar mi copy de trabajo de git a una revisión anterior

¿Hay alguna manera de cambiar mi copy de trabajo de Git por algo hace un número determinado de commits?

Por ejemplo, para ver 3 compromisos en el pasado, algo como:

git reset HEAD - 3 

El caso de uso aquí es que solo quiero ver si las testings que están fallando en la copy de trabajo actual también estaban fallando antes de mi última confirmación. No necesariamente quiero hacer cambios a las versiones anteriores. Entonces quisiera cambiar la copy de trabajo a la última confirmación.

Si simplemente desea ver una confirmación previa (sin alterar el estado de su sucursal / repository), use la git checkout .

 git checkout HEAD~3 

Si decides que quieres hacer un desarrollo fuera de este punto, entonces puedes ramificar.

 git checkout -b specialFeature47 

Para volver al presente, simplemente revisa el nombre de la twig en la que estabas.

 git checkout master 

Estate cansado de las soluciones de git reset sugeridas. Aquellos que realmente mueven su puntero de sucursal (eliminando efectivamente esos 3 commits).

Sí, eso es posible:

 git reset --hard HEAD~3 

Siempre puedes hacer:

git checkout HEAD ~ 15

y mueve 15 commits hacia atrás. El consejo actual no se altera, puedes moverte, incluso build esa versión y verificar, etc. Para volver, solo haz un git checkout mybranch . Si quieres empezar a trabajar allí (y dejar la twig original en el hielo), puedes git branch newbranch y trabajar con newbranch partir de ahora.

Considere cuidadosamente lo que está haciendo antes de usar cualquier command de reescritura de historial ( commit --amend , rebase , reset y rebase ), existe un potencial real de pérdida masiva de trabajo allí. La ramificación en git es muy barata, la mayor parte de lo que puedes lograr al rebobinar la historia se puede hacer simplemente creando una nueva twig comenzando en algún lugar en el pasado, y quizás cambiándola con la twig master actual. El trabajo realizado en la twig anterior podría ser útil más adelante; y si no lo hace, el costo de mantenerlo es probablemente insignificante de todos modos.