soft sirve revertir restaurar qué para ignorar deshacer cambios archivo git

sirve - ¿Cómo deshacer(restablecer) un repositorio Git a un compromiso en particular?



revertir cambios en un archivo git (4)

Esta pregunta ya tiene una respuesta aquí:

Cloné un repositorio Git y luego traté de revertirlo a un compromiso en particular al principio del proceso de desarrollo. Todo lo que se agregó al repositorio después de ese punto no es importante para mí, así que quiero omitir todos los cambios posteriores de mi código fuente local.

Sin embargo, cuando intento revertir en la herramienta GUI, no actualiza mi sistema de archivos local, siempre termino con el último código fuente para el proyecto.

¿Cuál es la forma correcta de obtener la fuente de un repositorio a partir de un compromiso en particular en el historial del proyecto y omitir todas las actualizaciones posteriores?


Actualizar:

Debido a los cambios en la forma en que se crean e impulsan las sucursales de seguimiento, ya no recomiendo cambiar el nombre de las sucursales. Esto es lo que recomiendo ahora:

Haga una copia de la rama en su estado actual:

git branch crazyexperiment

(El comando git branch <name> te dejará con tu rama actual aún protegida).

Restablece tu rama actual a la confirmación deseada con git reset :

git reset --hard c2e7af2b51

(Reemplace c2e7af2b51 con la confirmación a la que desea volver).

Cuando decides que tu rama de experimento loco no contiene nada útil, puedes eliminarlo con:

git branch -D crazyexperiment

Siempre es bueno cuando empiezas con comandos git que modifican el historial (restablecer, volver a generar) para crear ramas de respaldo antes de ejecutarlos. Finalmente, una vez que te sientas cómodo, no lo encontrarás necesario. Si modifica su historial de una manera que no desea y no ha creado una rama de respaldo, busque en git reflog . Git mantiene las confirmaciones durante un buen rato, incluso si no hay ramas o etiquetas que las señalen.

Respuesta original:

Una forma ligeramente menos aterradora de hacer esto que con el método git reset --hard es crear una nueva rama. Supongamos que está en la rama master y que la confirmación a la que desea volver es c2e7af2b51 .

Renombra tu rama maestra actual:

git branch -m crazyexperiment

Echa un vistazo a tu buen compromiso:

git checkout c2e7af2b51

Haga su nueva rama maestra aquí:

git checkout -b master

Ahora todavía tienes tu experimento loco por aquí si quieres verlo más tarde, pero tu rama maestra está de vuelta en tu último punto bueno conocido, listo para ser agregado. Si realmente quieres deshacerte de tu experimento, puedes usar:

git branch -D crazyexperiment


Cuando dices la ''Herramienta GUI'', asumo que estás usando Git para Windows.

IMPORTANTE, recomendaría crear una nueva rama para hacer esto si aún no lo ha hecho. De esa manera, su maestro puede permanecer igual mientras prueba sus cambios.

Con la GUI, debe ''revertir este compromiso'' como lo hizo con el historial a la derecha de su vista. Entonces notará que tiene todos los archivos no deseados como cambios para confirmar en la izquierda. Ahora debe hacer clic derecho en el título gris sobre todos los archivos sin confirmar y seleccionar "ignorar cambios". Esto hará que tus archivos vuelvan a ser como estaban en esta versión.


Para aquellos con un git gui doblado, también puedes usar gitk.

Haga clic con el botón derecho en la confirmación a la que desea volver y seleccione "Restablecer la rama maestra aquí". Luego elige duro del siguiente menú.


git reset --hard <tag/branch/commit id>

Notas:

  • git reset sin la opción --hard restablece el historial de confirmación, pero no los archivos. Con la opción --hard los archivos en el árbol de trabajo también se reinician. ( usuario acreditado )

  • Si desea confirmar ese estado para que el repositorio remoto también apunte a la confirmación revertida, haga lo siguiente: git push <reponame> -f ( usuario acreditado )