¿Volver a una confirmación mediante un hash SHA en Git? [duplicar]

Resuelto JP Silvashy asked hace 14 años • 9 respuestas

No tengo claro cómo git revertfunciona. 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
JP Silvashy avatar Dec 13 '09 06:12 JP Silvashy
Aceptado

Si desea confirmar sobre el HEAD actual con el estado exacto en una confirmación diferente, deshaciendo todas las confirmaciones intermedias, puede utilizar resetpara 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"
CB Bailey avatar Dec 12 '2009 23:12 CB Bailey

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 --hardle 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.

Jakub Narębski avatar Dec 13 '2009 09:12 Jakub Narębski

La mejor manera de retroceder a una confirmación específica es:

git reset --hard <commit-id>

Entonces:

git push <reponame> -f
darshit khatri avatar Nov 19 '2012 13:11 darshit khatri

Revierte dicho compromiso, es decir, agrega el compromiso opuesto. Si desea consultar una revisión anterior, debe hacer lo siguiente:

git checkout 56e05fced214c44a37759efa2dfc25a65d8ae98d
Michael Krelin - hacker avatar Dec 12 '2009 23:12 Michael Krelin - hacker