Git es uno de los sistemas de control de versiones (VCS) más comunes y versátiles, pero no siempre es sencillo y fácil de usar. Puedes encontrarte con problemas cuando realizas un cambio no deseado en un repositorio. Hay varias estrategias diferentes que puede seguir para restaurar su repositorio. Esta guía discute cómo deshacer una confirmación git y explica las ventajas y desventajas de cada enfoque.
Antecedentes importantes de Git para deshacer una confirmación local
El software de control de versiones permite a los usuarios gestionar y rastrear cambios en el código fuente de ordenadores, documentación, sitios web y otros sistemas. Git es un VCS estándar de código abierto que utiliza una arquitectura distribuida. Cada proyecto Git está representado por un repositorio. Un repositorio almacena toda la información sobre el proyecto, incluidos los archivos fuente y el historial de cambios. El historial se almacena como información de metadatos, incluyendo la marca de tiempo, los comentarios y la persona que realizó el cambio.
Todo el equipo del proyecto contribuye a un repositorio compartido, conocido como repositorio remoto. Sin embargo, cada desarrollador mantiene su propio repositorio con los cambios locales en los que está trabajando. Git es conocido por su rendimiento optimizado, sus funciones de seguridad integradas, su flexibilidad y su eficacia. Algunos comandos de Git son muy potentes y pueden manejar tareas difíciles, incluyendo divisiones y fusiones de flujos. Por desgracia, Git también puede ser complejo y difícil de aprender.
Las actualizaciones pueden propagarse entre las ramas a través de una serie de comandos Git. Antes de que alguien pueda usar Git para deshacer un commit local, primero debe tener claro cómo funciona Git normalmente. Existen tres ubicaciones diferentes para los archivos.
El directorio de trabajo
Esta es un área donde los usuarios pueden hacer los cambios que quieran a sus archivos sin restricciones. Pueden crear nuevos archivos o modificarlos, probar sus cambios y borrar todo lo que no quieran.
El área de preparación o índice Git
Los usuarios deben añadir archivos nuevos o modificados a esta área antes de poder realizar una confirmación. Es un área intermedia entre el directorio de trabajo y el repositorio local.
El repositorio local
Los usuarios envían los cambios del área de preparación a este repositorio. Cada confirmación representa una instantánea del proyecto en un momento determinado. Desde aquí, los archivos pueden ser enviados a un repositorio remoto.
El comando git add se utiliza para mover los cambios en los archivos de trabajo, junto con cualquier archivo nuevo, a la zona de preparación. En este punto, el directorio de trabajo y el área de preparación están sincronizados, pero los cambios aún no están en el repositorio local. Cuando los cambios están completos, los desarrolladores pueden utilizar git commit para mover sus cambios a su repositorio. Cada commit rastrea los nuevos cambios, y asegura que la instantánea actual esté disponible en el futuro. Un commit representa el repositorio en el momento en que se hizo. Sin embargo, todavía no mueve los cambios al repositorio compartido.
Los cambios en el repositorio local no se propagan automáticamente a ningún repositorio remoto. Los desarrolladores pueden potencialmente portar sus cambios al repositorio remoto usando git push. Esto permite a otros usuarios ver e incorporar el commit. Los cambios siempre deben ser confirmados antes de ser enviados. Una organización puede establecer requisitos adicionales antes de ejecutar git push, como revisiones de código o pruebas automatizadas.
Cuando los usuarios sólo han realizado cambios en su directorio de trabajo, no se registra nada en el historial. No hay que dar ningún paso adicional para deshacer nada. Incluso cuando los archivos se han añadido a la zona de preparación, todavía hay varias opciones para deshacer los cambios. Sin embargo, después de que los cambios se hayan confirmado en el repositorio, se deben utilizar ciertos comandos git para deshacer los cambios. Si la confirmación ya ha sido enviada a un repositorio remoto, sólo hay un comando git aceptable para deshacerla.
Los usuarios pueden ver los registros de cambios de cualquier archivo en un repositorio usando alguna variación del comando git log. Cada confirmación se identifica mediante una cadena única de 40 caracteres. Esta cadena es equivalente a la suma de comprobación SHA-1 de la confirmación. La versión actual de un archivo se conoce como confirmación HEAD. Cuando se aplica a una rama, HEAD indica la versión actual de la rama tal y como se refleja en el repositorio local. Para más información sobre Git, consulta el sitio web de Git.
Cómo deshacer una confirmación de Git
Hay varias formas de utilizar git para deshacer un commit local. La elección correcta depende de los siguientes factores
- Los cambios podrían ser necesarios en el futuro. Algunas opciones preservan el commit mientras que otras lo borran completamente.
- Un registro de cambios limpio se considera ventajoso.
- Los cambios han sido confirmados en el repositorio remoto o no. Si alguien ya ha enviado los cambios usando git push, hay menos opciones disponibles.
Los métodos más comunes de usar git para eliminar el último commit son git revert o alguna variante de git reset. Sin embargo, una organización puede tener buenas prácticas estándar sobre qué comando debe usarse. Puedes encontrar información más detallada sobre todos estos comandos en la documentación de Git.