Saltar al contenido
GitTree
guías de git4 minutos de lectura

Explicación del reinicio de Git: suave, mixto y duro

git reset mueve tu rama a otra confirmación. Los tres modos difieren sólo en lo que hacen con sus archivos. Esto es lo que conserva cada uno, cuál usar y cómo regresar cuando reinicia demasiado.

Escrito por Kodmora

La casa de software detrás de GitTree

Actualizado
  • Deshacer y recuperar
  • Historial de commits
  • Commits
En esta página

Los tres modos mueven la rama actual a la confirmación que nombre. `--soft` mantiene todos los cambios preparados, `--mixed` (el valor predeterminado) los mantiene en su carpeta de trabajo sin preparar y `--hard` los descarta. Para deshacer su última confirmación pero conservar el trabajo, ejecute git reset --soft HEAD~1. Utilice --hard solo cuando esté seguro, porque elimina los cambios no confirmados para siempre.

¿Cuál es la diferencia entre blando, mixto y duro?

Qué cambia cada modo de reinicio de git
ModoMovimientos de ramasÁrea de preparaciónCarpeta de trabajoÚselo para
--softsimantenidomantenidoRehacer commits: todo permanece en escena
--mixedsiReiniciarmantenidoDejar de preparar y volver a elegir qué cometer
--hardsiReiniciarReiniciarTira el trabajo a la basura

Git guarda tres copias de tu trabajo: el historial de confirmaciones, el área de preparación y la carpeta de trabajo. El reinicio siempre mueve el primero. El modo decide si también reescribe los otros dos.

¿Cuándo debo usar git reset --soft?

Úselo para deshacer confirmaciones mientras mantiene cada cambio preparado, listo para confirmar nuevamente. Es la forma más rápida de agrupar una rama en una sola confirmación:

# undo the last commit, keep the changes staged
git reset --soft HEAD~1

# squash everything since main into one commit
git reset --soft main
git commit -m "feat(search): quick open"

¿Cuándo debo usar git reset --mixed?

Es el valor predeterminado, por lo que git reset significa git reset --mixed. Úselo para deshacer confirmaciones y dividir el trabajo de manera diferente, o para deshacer archivos:

# undo the last two commits, keep the changes unstaged
git reset HEAD~2

# unstage one file (the branch does not move)
git reset src/search.ts

Para eliminar la preparación, git restore --staged src/search.ts hace el mismo trabajo y lee con mayor claridad.

¿Cuándo debo usar git reset --hard?

# drop the last commit and its changes
git reset --hard HEAD~1

# match the remote exactly
git fetch origin
git reset --hard origin/main

¿Cómo elimino una confirmación de una rama?

Formas de eliminar una confirmación
SituaciónComando
Última confirmación, no enviadagit reset --hard HEAD~1
Commit anterior, no enviadogit rebase -i <sha>~1, luego márcalo drop
El commit ya está presionadogit revert <sha>
El commit fue a la rama equivocadagit cherry-pick y luego restablecer la rama anterior

git revert mantiene el historial intacto, por lo que es la única opción segura en una rama compartida. Restablecer una rama enviada requiere un push fuerte y rompe los clones de tus compañeros de equipo. Rebase interactiva y cherry-pick tienen sus propias guías.

¿Cómo deshago un reinicio de git?

Restablecer movió la rama y el reflog recuerda dónde estaba:

git reflog
# 3e52f10 HEAD@{0}: reset: moving to HEAD~2
# 9b3c7d1 HEAD@{1}: commit: add search box

git reset --hard 9b3c7d1

Esto devuelve confirmaciones, incluso después de --hard. Los archivos que se prepararon pero que nunca se confirmaron a veces se pueden encontrar con git fsck --lost-found. Los cambios que nunca se llevaron a cabo han desaparecido. Deshacer un reinicio, rebase o confirmación cubre todos los casos.

¿Cuál es la diferencia entre restablecer, revertir y restaurar?

Tres comandos que suenan igual
Comandoque hace¿Reescribe la historia?
git resetMueve la rama a otra confirmación.si
git revertAgrega una confirmación que deshace otra.No
git restoreCambia archivos, nunca la rama.No

Cómo restablecer una rama en GitTree

  1. Elige el commit

    Haga clic con el botón derecho en la confirmación a la que debe regresar la rama y abra Restablecer... a esta confirmación.

  2. Elige el modo

    Elija Soft: Mantener todos los cambios preparados, Mixto: Mantener los cambios en la carpeta de trabajo o Dificil: Descartar todos los cambios….

  3. Deshacer si es necesario

    GitTree guarda tu trabajo en refs/ogt/trash primero, por lo que Deshacer puede recuperarlo, incluso después de un restablecimiento completo.

Los modos de reinicio suave, mixto y completo en el menú de una confirmación en GitTree.
Los modos de reinicio suave, mixto y completo en el menú de una confirmación en GitTree.GitTree interfaz con un repositorio de demostración.

Consulte restablecer una rama a una confirmación para obtener más detalles y la lección de modos de reinicio para practicar en un repositorio seguro.

Preguntas frecuentes

¿Qué significa HEAD~1?

El commit un paso antes del actual. HEAD~3 está tres pasos atrás. git log --oneline muestra los hash si prefieres nombrar una confirmación directamente.

¿Git reset elimina confirmaciones?

Aleja la rama de ellos, por lo que dejan de aparecer en git log. Permanecen en el reflog durante al menos 30 días de forma predeterminada, luego Git puede eliminarlos.

¿Cómo deshago mi última confirmación pero conservo los cambios?

Ejecute git reset --soft HEAD~1 para mantenerlos preparados o git reset HEAD~1 para mantenerlos sin preparar.

¿Es seguro git reset --hard?

Es seguro para trabajos confirmados, que el reflog puede recuperar. No es seguro para trabajos no confirmados, que elimina. Guarde o confirme primero si no está seguro.

¿Puedo restablecer una rama que ya está activada?

Sólo con un push de fuerza, que reescribe la rama para todos. En ramas compartidas, utilice git revert en su lugar.

Fuentes

Las afirmaciones sobre otros productos se compararon con sus páginas oficiales el 7 de noviembre de 2026. Los precios y las características cambian; Las páginas de los proveedores son la fuente de la verdad.