ver tag pendientes modificados crear commits changes archivos git

tag - ¿Volver a un commit por un hash SHA en Git?



git ver archivos modificados (9)

Esta pregunta ya tiene una respuesta aquí:

No tengo claro cómo funciona git revert . Por ejemplo, quiero volver a una confirmación 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


Debería ser tan simple como:

git reset --hard 56e05f

Eso te llevará de vuelta a ese punto específico en el tiempo.


Esto es más comprensible:

git checkout 56e05fced -- . git add . git commit -m ''Revert to 56e05fced''

Y para demostrar que funcionó:

git diff 56e05fced


Esto podría funcionar:

git checkout 56e05f echo ref: refs/heads/master > .git/HEAD git commit


La mejor manera de revertir a un compromiso específico es:

git reset --hard <commit-id>

Entonces:

git push <reponame> -f


Lo que hace git-revert es crear una confirmación que deshace los cambios realizados en una confirmación dada, creando una confirmación que es inversa (bueno, recíproca) de una confirmación dada. Por lo tanto

git revert <SHA-1>

debería y funciona.

Si desea retroceder a una confirmación específica y puede hacer esto 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 --hard le haría perder cualquier cambio no confirmado en el directorio de trabajo).

Notas adicionales

Por cierto, quizás no sea obvio, pero en todas partes donde la documentación dice <commit> o <commit-ish> (o <object> ), puede poner un identificador SHA (completo o acortado) de commit.


Revierte dicho compromiso, es decir, agrega el compromiso opuesto a él. Si desea pagar una revisión anterior, usted hace:

git checkout 56e05fced214c44a37759efa2dfc25a65d8ae98d


Si desea confirmar la HEAD actual con el estado exacto en una confirmación diferente, deshacer todas las confirmaciones intermedias, entonces puede usar 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"


Si sus cambios ya se han enviado a un control remoto público compartido , y desea revertir todas las confirmaciones entre HEAD y <sha-id> , entonces puede pasar un rango de confirmación a git revert ,

git revert 56e05f..HEAD

y revertirá todas las confirmaciones entre 56e05f y HEAD (excluyendo el punto de inicio del rango, 56e05f ).


Actualizado:

Esta respuesta es más simple que mi respuesta: ¿Cómo revertir el repositorio Git a un commit anterior?

Respuesta original

# Create a backup of master branch git branch backup_master # Point master to ''56e05fce'' and # make working directory the same with ''56e05fce'' git reset --hard 56e05fce # Point master back to ''backup_master'' and # leave working directory the same with ''56e05fce''. git reset --soft backup_master # Now working directory is the same ''56e05fce'' and # master points to the original revision. Then we create a commit. git commit -a -m "Revert to 56e05fce" # Delete unused branch git branch -d backup_master

Los dos comandos git reset --hard y git reset --soft son mágicos aquí. El primero cambia el directorio de trabajo, pero también cambia la cabecera. Arreglamos la cabeza por el segundo.