¿Volver a una confirmación mediante un hash SHA en Git? [duplicar]
No tengo claro cómo git revert
funciona. Por ejemplo, quiero volver a una confirmación de seis confirmaciones detrás de la cabeza, revirtiendo todos los cambios en las confirmaciones intermedias intermedias.
Digamos que su hash SHA es 56e05fced214c44a37759efa2dfc25a65d8ae98d
. Entonces ¿por qué no puedo hacer algo como:
git revert 56e05fced214c44a37759efa2dfc25a65d8ae98d
Si desea confirmar sobre el HEAD actual con el estado exacto en una confirmación diferente, deshaciendo todas las confirmaciones intermedias, puede utilizar reset
para crear el estado correcto del índice para realizar la confirmación.
# Reset the index and working tree to the desired tree
# Ensure you have no uncommitted changes that you want to keep
git reset --hard 56e05fced
# Move the branch pointer back to the previous HEAD
git reset --soft "HEAD@{1}"
git commit -m "Revert to 56e05fced"
Lo que hace git-revert es crear una confirmación que deshace los cambios realizados en una confirmación determinada, creando una confirmación que es inversa (bueno, recíproca) de una confirmación determinada. Por lo tanto
git revert <SHA-1>
debería y funciona.
Si desea retroceder hasta una confirmación específica, y puede hacerlo porque esta parte del historial aún no se publicó, debe usar git-reset , no git-revert:
git reset --hard <SHA-1>
(Tenga en cuenta que esto --hard
le haría perder cualquier cambio no confirmado en el directorio de trabajo).
Notas adicionales
Por cierto, tal vez no sea obvio, pero en todos los lugares donde la documentación dice <commit>
o <commit-ish>
(o <object>
), puede colocar un identificador SHA-1 (completo o abreviado) de confirmación.
La mejor manera de retroceder a una confirmación específica es:
git reset --hard <commit-id>
Entonces:
git push <reponame> -f
Revierte dicho compromiso, es decir, agrega el compromiso opuesto. Si desea consultar una revisión anterior, debe hacer lo siguiente:
git checkout 56e05fced214c44a37759efa2dfc25a65d8ae98d