Cómo deshacer cambios en Git










  • Todos hemos estado allí. Guardas algo y luego te das cuenta de que necesitas revertir o retroceder. La mayoría de las aplicaciones tienen incorporado un concepto de deshacer ediciones o deshacer cambios. Git no es diferente, ya que el programa permite realizar cambios de Git y deshacer cambios de Git.

    El concepto de cambios y deshacer de Git es el mismo que en cualquier otro lugar, pero el conjunto de comandos de Git y cómo funciona es definitivamente diferente de lo que es para la mayoría de las otras aplicaciones.

    Si comprende cómo funcionan las confirmaciones de Git (guardar en Git), al menos tendrá una comprensión básica de que deshacer las confirmaciones y los cambios de Git también se basan en un conjunto de comandos diferentes.

    Echemos un vistazo a cómo deshacer cambios en Git.

    Git como una utilidad de administración de línea de tiempo

    Tal como lo indica el título de esta sección, una excelente manera de pensar en Git es como una utilidad de administración de línea de tiempo.

    Las confirmaciones son instantáneas de un punto en el tiempo o puntos de interés a lo largo de la línea de tiempo del historial de un proyecto. Se pueden administrar múltiples líneas de tiempo mediante el uso de sucursales. Cuando hablamos de deshacer cambios en Git, generalmente nos estamos moviendo hacia atrás en el tiempo o a otra línea de tiempo donde no ocurrieron errores.

    Revisión de confirmaciones antiguas

    Como es el caso con cualquier sistema de control de versiones, la idea es almacenar copias «seguras» de un proyecto para que nunca tenga que preocuparse por romper irreparablemente su base de código.

    Una vez que haya creado un historial de confirmaciones del proyecto, podrá revisar y revisar cualquier confirmación en el historial. La mejor opción para revisar el historial general de un repositorio Git es el comando git log .

    En el siguiente ejemplo, el comando git log se usa para obtener una lista de las últimas confirmaciones de una popular biblioteca de gráficos de código abierto.

    [ht_message mstyle=”info” title=”” show_icon=”” id=”” class=”” style=”” ]git log –oneline

    e2f9a78fe Se reemplazó FlyControls con OrbitControls


    d35ce0178 Editor: panel de accesos directos compatible con Safari.


    9dbe8d0cf Editor: Sidebar.Controls a Sidebar.Settings.Shortcuts.
    Limpiar.


    05c5288fc Combinar solicitud de extracción n.° 12612 de TyLindberg/editor-controls-panel


    0d8b6e74b Combinar solicitud de extracción n.° 12805 de harto/patch-1


    23b20c22e Combinar solicitud de extracción n.° 12801 de gam0022/improve-raymarching-example-v2


    fe78029f1 Corregir error tipográfico en la documentación


    7ce43c448 Merge solicitud #12794 de WestLangley/dev-x


    17452bb93 Solicitud de extracción de fusión #12778 de OndrejSpanel/unitTestFixes


    b5c1b5c70 Solicitud de extracción de fusión #12799 de dhritzkiv/patch-21


    1b48ff4d2 Compilaciones actualizadas.


    88adbcdf6 WebVRManager: Limpiar.


    2720fbb08 Merge pull request #12803 from dmarcos/parentPoseObject


    9ed629301 Verificar padre de poseObject en lugar de cámara


    219f3eb13 Actualizar GLTFLoader.js


    15f13bb3c Actualizar GLTFLoader.js


    6d9c22a3b Actualizar uniformes solo cuando onWindowResize


    881b25b58 Actualizar ProjectionMatrix en cambio de aspecto

    Como puede ver, cada confirmación tiene un hash de identificación SHA-1 único. Los ID se utilizan como marcas de lugar para que pueda viajar a través de toda la línea de tiempo confirmada y revisar las confirmaciones.

    El comando git log solo mostrará confirmaciones para la rama seleccionada actualmente de forma predeterminada. Entonces, ¿qué sucede si la confirmación que está buscando se encuentra en otra rama? Para resolver este problema, puede ver todas las confirmaciones en todas las ramas ejecutando el siguiente comando:

    [ht_message mstyle=”info” title=”” show_icon=”” id=”” class=”” style=”” ]git log –branches=*[/ht_message]

    Una vez que haya encontrado la referencia de confirmación al punto en el historial que desea visitar, puede utilizar el comando git checkout para visitar esa confirmación.

    El comando git checkout es una manera fácil de cargar instantáneas guardadas directamente en su máquina de desarrollo.

    En caso de que necesite un recordatorio, comprobar un archivo antiguo no mueve el puntero HEAD. Permanece en la misma rama y en la misma confirmación, evitando un estado de ‘cabeza separada’. Luego puede confirmar la versión anterior del archivo en una nueva instantánea como lo haría con cualquier otro cambio.

    Básicamente, usar el comando git checkout en un archivo actúa como una forma de volver a la versión anterior de un archivo individual.

    Cómo ver una revisión anterior

    En el siguiente ejemplo, supongamos que está desarrollando algo pero no está seguro de si desea mantenerlo o no. Para tomar una decisión, debe observar el estado del proyecto antes de comenzar. Primero, deberá encontrar el ID de la revisión que desea ver.

    [ht_message mstyle=”info” title=”” show_icon=”” id=”” class=”” style=”” ]git log –oneline[/ht_message]

    Ahora, supongamos que el historial de su proyecto se parece a esto:

    [ht_message mstyle=”info” title=”” show_icon=”” id=”” class=”” style=”” ]b7119f2 Continúe haciendo cosas raras

    872fa7e Pruebe algo raro


    a1e8fb5 Realice algunos cambios importantes en example.txt


    435b61d Crear ejemplo. txt


    9773e52 Importación inicial[/ht_message]

    Puede usar el comando git checkout para ver el compromiso «Hacer algunos cambios de importación en example.txt» de la siguiente manera:

    [ht_message mstyle=”info” title=”” show_icon=”” id=”” class=”” style=”” ]git checkout a1e8fb5[/ht_message]

    Este comando hace que su directorio de trabajo coincida con el estado exacto de la confirmación a1e8fb5. Esto le permite mirar archivos, compilar el proyecto, ejecutar pruebas e incluso editar archivos, todo sin tener que preocuparse por perder el estado actual del proyecto.

    Recuerde, nada de lo que haga aquí se guardará en su repositorio. Para continuar con el desarrollo, debe volver al estado «actual» de su proyecto utilizando el siguiente comando:

    [ht_message mstyle=”info” title=”” show_icon=”” id=”” class=”” style=”” ]git checkout master[/ht_message]

    Una vez que regrese a la rama maestra, puede usar el comando git revert o el comando git reset para deshacer los cambios que desee.

    Opciones para deshacer instantáneas confirmadas

    En realidad, hay varias estrategias diferentes para usar cuando desea deshacer una confirmación. Los comandos Git más utilizados para deshacer y realizar cambios son git checkout , git revert y git reset .

    Algunos puntos importantes para recordar incluyen:

    • Una vez que se han confirmado los cambios, suelen ser permanentes.
    • Use el comando git checkout para moverse y revisar el historial de confirmaciones.
    • El comando git revert es la mejor herramienta para deshacer cambios públicos compartidos.
    • El comando git reset se usa mejor para deshacer cambios privados locales.

    Finalmente, además de los comandos de deshacer principales y populares de Git, también puede usar comandos como git log para encontrar confirmaciones perdidas, git clean para deshacer todos esos cambios no confirmados y git add para modificar el índice de preparación.