13. Deshacer cambios locales con Git: revertir y restablecer

Cuando trabajamos con el versionado de código usando Git, es común realizar cambios que, por algún motivo, queremos deshacer. Ya sea porque cometimos un error o porque queremos volver a un estado anterior del proyecto, Git ofrece poderosas herramientas para deshacer cambios locales: git revert y git reset.< /p>

El comando git revert

El comando git revert se utiliza para deshacer los cambios introducidos por una confirmación específica, creando una nueva confirmación con el contenido revertido. Esta es una forma segura de deshacer cambios ya que no altera el historial del repositorio. En otras palabras, git revert es una forma de "regresar en el tiempo" sin borrar el historial de cómo llegaste allí.

git revert [commit_hash]

Para usar git revert, debes especificar el hash de la confirmación que deseas revertir. Luego, Git creará una nueva confirmación que es exactamente la inversa de la confirmación especificada. Esto es útil cuando necesita realizar un seguimiento de lo que se ha deshecho o cuando está trabajando en un repositorio compartido donde eliminar el historial sería problemático para otros contribuyentes.

El comando git reset

El comando git reset, por otro lado, es una herramienta más drástica. Se utiliza para restablecer el estado actual de su repositorio a una confirmación anterior, descartando los cambios que se realizaron después de esa confirmación. Hay tres formas principales de utilizar git reset: --soft, --mixed y --hard.

Reinicio parcial

git reset --soft [commit_hash]

--soft mantiene todos los cambios actuales en el estado "cambios por etapas". Esto es útil cuando desea restablecer el HEAD de su repositorio a una confirmación anterior, pero desea conservar los cambios que realizó para realizar una nueva confirmación con ellos.

Restablecer mixto

git reset --mixed [commit_hash]

--mixed es la opción predeterminada de git reset. Deshará la confirmación y los cambios que haya realizado se mantendrán en su directorio de trabajo, pero no se organizarán. Esto significa que tendrás que agregar los cambios nuevamente antes de poder confirmarlos.

Restablecer por completo

git reset --hard [commit_hash]

--hard es la opción más radical. Restablecerá el HEAD, el índice y el directorio de trabajo al estado de una confirmación anterior. Todos los cambios realizados después de la confirmación especificada se perderán. Esta opción debe usarse con precaución ya que no hay forma de recuperar los cambios descartados.

Elegir entre Revertir y Restablecer

La elección entre git revert y git reset depende de la situación y de lo que quieras lograr. Si está trabajando en un repositorio compartido y desea deshacer una confirmación sin afectar a otros contribuyentes, git revert es la opción adecuada. Si estás trabajando localmente y has hecho algo que deseas deshacer por completo, git reset podría ser el camino a seguir.

Ejemplo práctico

Supongamos que realizó una confirmación que, tras revisarla, se dio cuenta de que no debería haberse realizado. Para revertir esta confirmación, puedes usar:

git revert [commit_hash]

Git creará una nueva confirmación que deshará los cambios de la confirmación especificada. Si desea volver a un estado anterior del proyecto y descartar todas las confirmaciones realizadas después de cierto punto, puede usar:

git reset --hard [commit_hash]

Esto cambiará el estado de su directorio de trabajo al estado de la confirmación especificada, descartando todos los cambios realizados desde entonces.

Ten cuidado al deshacer cambios

Es importante tener cuidado al deshacer cambios, especialmente cuando se utiliza git reset --hard. Una vez que se descartan los cambios con esta opción, no se pueden recuperar a menos que haya realizado una copia de seguridad de ellos de alguna manera. Verifique siempre dos veces antes de usar comandos que puedan provocar la pérdida de datos.

Conclusión

Git es una poderosa herramienta para el control de versiones y comprender cómo deshacer los cambios es fundamental para administrar su código de manera efectiva. git revert y git reset son comandos valiosos que le brindan diferentes niveles de control sobre el historial de su repositorio y el estado de su proyecto. Al usarlos con cuidado y comprensión, podrá navegar por su historial de código y administrar sus cambios con confianza.

Ahora responde el ejercicio sobre el contenido:

¿Cuál de las siguientes afirmaciones sobre los comandos `git revert` y `git reset` es correcta?

¡Tienes razón! Felicitaciones, ahora pasa a la página siguiente.

¡Tú error! Inténtalo de nuevo.

Imagen del artículo Ramificación: ¿qué son las sucursales?

Siguiente página del libro electrónico gratuito:

14Ramificación: ¿qué son las sucursales?

6 minutos

¡Obtén tu certificado para este curso gratis! descargando la aplicación Cursa y leyendo el libro electrónico allí. ¡Disponible en Google Play o App Store!

Disponible en Google Play Disponible en App Store

+ 6,5 millones
estudiantes

Certificado gratuito y
válido con código QR

48 mil ejercicios
gratis

Calificación de 4.8/5
en tiendas de aplicaciones

Cursos gratuitos de
vídeo, audio y texto.