Diferencia entre Git Reset, Git Checkout y Git Revert ⋆ ALexHost SRL

Pon a prueba tus habilidades en todos nuestros servicios de Hosting y ¡obtén un 15% de descuento!

Utiliza el código al pagar:

Skills
17.01.2025

Diferencia entre Git Reset, Git Checkout y Git Revert

Un control de versiones eficiente es vital para cualquier proyecto de desarrollo, y la infraestructura adecuada puede mejorar significativamente su flujo de trabajo. AlexHost ofrece soluciones de alojamiento VPS potentes y escalables, ideales para alojar tus repositorios Git y garantizar una gestión fluida del proyecto. Con direcciones IPv4 dedicadas, almacenamiento NVMe rápido y un panel de control fácil de usar, AlexHost proporciona el entorno perfecto para ejecutar Git y otras herramientas de desarrollo, ofreciéndote el rendimiento y la fiabilidad necesarios para una colaboración fluida.

Cuando trabajas con Git, existen múltiples comandos que te permiten deshacer cambios o navegar entre diferentes estados de tu repositorio. Tres de los comandos más utilizados para este propósito son git reset, git checkout y git revert. Aunque pueden parecer similares, cada uno sirve a un propósito distinto y opera de una manera diferente.

Aquí tienes un desglose detallado de las diferencias entre git reset, git checkout y git revert:


1. git reset

git reset se usa para deshacer confirmaciones o deshacer cambios moviendo el puntero HEAD de la rama actual a una confirmación especificada. Modifica el historial de confirmaciones y puede afectar a tu directorio de trabajo, al área de preparación, o a ambos, dependiendo de cómo se use.

Casos de uso:

  • Deshacer confirmaciones recientes.
  • Mover el puntero HEAD a una confirmación anterior.
  • Eliminar archivos del área de preparación (manteniendo los cambios en el directorio de trabajo).

Sintaxis del comando:

git reset [–soft | –mixed | –hard]

Modos de reinicio:

  • –suave: Mueve el puntero HEAD al commit especificado pero mantiene los cambios tanto en el área de staging como en el directorio de trabajo.
  • –mixto (por defecto): Mueve el puntero HEAD a la confirmación especificada y reinicia el área de preparación, pero mantiene los cambios en el directorio de trabajo.
  • –hard: Mueve el puntero HEAD, reinicia el área de preparación y descarta todos los cambios en el directorio de trabajo.

Ejemplo:

git reset –hard HEAD~1 # Retrocede HEAD una confirmación y descarta todos los cambios

Precaución: git reset –hard es una operación destructiva porque elimina permanentemente los cambios del directorio de trabajo y del historial de confirmaciones.


2. git checkout

git checkout se utiliza para cambiar entre ramas o para obtener una confirmación o archivo específico. Modifica el directorio de trabajo para que coincida con el estado de la rama, confirmación o archivo que has extraído, pero no modifica el historial de confirmaciones a menos que crees una nueva confirmación después de cambiar de rama.

Casos de uso:

  • Cambio entre ramas.
  • Consultar una confirmación anterior o archivos específicos sin alterar el historial de confirmaciones.
  • Creación de una nueva rama.

Sintaxis del comando:

git checkout # Cambiar a una rama diferente git checkout # Comprobar un commit específico en un estado HEAD separado git checkout — # Restaurar un archivo específico a su último estado comprometido

Ejemplo:

git checkout feature-branch # Cambiar a ‘feature-branch’ git checkout 123abc # Comprobar la confirmación con el hash 123abc (estado HEAD separado) git checkout — file.txt # Restaurar file.txt a su estado en la última confirmación

Precaución: Si haces checkout de un commit específico (no de una rama), entras en un estado HEAD desvinculado, lo que significa que los cambios no se asociarán a ninguna rama a menos que crees una nueva rama desde ese punto.


3. git revert

git revert se usa para deshacer una confirmación creando una nueva que revierte los cambios introducidos por la confirmación original. Conserva el historial de confirmaciones, por lo que es una forma segura de deshacer cambios sin reescribir el historial.

Casos de uso:

  • Deshacer confirmaciones de forma segura, especialmente en ramas compartidas o remotas.
  • Revertir commits específicos manteniendo intacto el historial de commits.
  • Deshacer cambios en un entorno colaborativo.

Sintaxis del comando:

git revert

Ejemplo:

git revert HEAD # Deshacer el commit más reciente y crear un nuevo commit con los cambios inversos git revert # Deshacer un commit específico creando un nuevo commit que invierta sus cambios

Nota importante: git revert no borra ningún historial ni commit. En su lugar, crea una nueva confirmación que deshace los cambios de la confirmación especificada. Esto hace de git revert un comando no destructivo que mantiene un historial completo de cambios.

Cuándo usar cada comando

  • Usa git reset cuando:
    • Necesites deshacer un commit reciente (o múltiples commits) en tu repositorio local.
    • Quieres deshacer archivos o revertir cambios en tu directorio de trabajo.
    • Estás trabajando en una rama local y no necesitas preservar el historial de confirmaciones.
  • Usa git checkout cuando:
    • Necesites cambiar entre ramas.
    • Quieres comprobar un commit anterior sin modificar el historial (en un estado HEAD separado).
    • Necesitas restaurar un archivo o carpeta a su estado anterior sin afectar al resto de tus cambios.
  • Usa git revert cuando:
    • Necesitas deshacer cambios que ya han sido enviados a una rama compartida o remota.
    • Quieres deshacer una confirmación pero mantener el historial intacto.
    • Estás colaborando con otros y quieres mantener un historial de confirmaciones claro y preciso.

Conclusión

Cada uno de estos comandos de Git -git reset, git checkout y git revert- tiene un propósito y un efecto únicos. Entender cuándo y cómo usarlos correctamente es esencial para gestionar eficazmente el historial y los cambios de tu proyecto. Cuando se trabaja en un entorno colaborativo, a menudo es más seguro utilizar git revert para deshacer los cambios, mientras que git reset puede ser útil para limpiar tu historial local. git checkout, por otro lado, es el comando a utilizar para cambiar de rama o navegar por diferentes commits sin alterar el historial del repositorio.

Pon a prueba tus habilidades en todos nuestros servicios de Hosting y ¡obtén un 15% de descuento!

Utiliza el código al pagar:

Skills