Introducción
Git es una excelente herramienta para mantener cada versión de su base de código y, a veces, es necesario retroceder en el tiempo y restaurar versiones anteriores de archivos. Git puede revertir los cambios en un solo archivo o carpeta, así como retractarse de confirmaciones completas o restablecer todo el repositorio.
Elegir entre revertir y restablecer
Cuando "revierte" una confirmación, Git generalmente aplica una nueva confirmación con las modificaciones opuestas, esencialmente cancelándola. Esto es útil si comete un error y necesita "eliminar" una confirmación, incluso si permanece en el historial.
El procedimiento para restablecer el repositorio es algo diferente. Solo puede retractarse de una confirmación a la vez, pero si ejecuta un restablecimiento de git, Git restablecerá por completo el repositorio al momento en que se creó esa confirmación. Esto se hace por una variedad de razones, las más comunes son para borrar confirmaciones o corregir el historial de sucursales.
Ambos procedimientos afectan a todo el repositorio, pero se pueden usar comandos idénticos para lograr los mismos efectos en archivos o carpetas individuales. Por ejemplo, ejecutar git reset en un solo el archivo lo restauraría al estado en el que se encontraba cuando se creó la confirmación. Esto es beneficioso si solo desea elegir una versión anterior del archivo de su historial de Git.
Examen de versiones antiguas de Git
The low-tech approach to restoring a file to its original state is rather simple—Github and most other Git servers maintain track of your file history, and you can simply click on a commit and choose “Browse Files” to see a snapshot of your repository from the past. You may then either descargar el archivo o copiar el texto.
Esto es particularmente útil si está trabajando con una gran cantidad de archivos de código y desea comparar versiones anteriores de las rutinas que ha escrito. En ese escenario, probablemente no desee revertir todo, solo una función. Sin tocar la CLI de Git, puede copiar el código de esa función.
Revertir un archivo Git a una versión anterior
Hicimos una confirmación en este repositorio de prueba que cambió el LÉAME y agregó un nuevo archivo. Queremos deshacer las modificaciones de README, pero no queremos restaurar todo el repositorio a la primera confirmación.
La respuesta es restablecer solo el LÉAME descargando una versión anterior de ese archivo. El comando de pago de Git puede lograr una variedad de cosas, como cambiar de sucursal, aunque a menudo se usa para descargar datos en función de una confirmación o ID de sucursal.
Para restaurar un archivo a una versión anterior, busque el ID de confirmación desde el momento en que desea restaurarlo. Puede usar git log con un solo archivo en el ámbito para ver solo los cambios realizados en ese archivo:
registro git README.md
Copie la ID de confirmación, luego ejecute git checkout con la ID y la ruta del archivo:
git checkout 22710694b25d7ce5297559851beb7d3e4de811bb README.md
Esto volverá a alterar el archivo, pero aún no confirmará los cambios. Eres libre de hacer cambios y comprometerte cuando estés listo.
En este caso, git checkout marcó las modificaciones como listas para la próxima confirmación. Si no desea realizar las modificaciones, puede hacerlo. Esto podría ser útil para descargar temporalmente versiones anteriores de archivos sin usar Github.
Reversión de cambios a archivos individuales
De manera similar, puede usar git revert para deshacer las modificaciones realizadas en una sola confirmación. No hay forma de aplicarlo a un solo archivo, sin embargo, si la confirmación afecta a otros archivos, simplemente rechace las modificaciones.
Use the —no-commit switch to enable modification of the “revert commit” that Git generates automatically.
git revertir de8564b131ca6a15a7e7c73f5ef156b119cc0b93
Esto le permite realizar cambios en los archivos antes de completar la reversión. Si hay cambios no deseados que se han realizado, puede borrarlos usando su cliente o un git checkout vacío.
git checkout -- archivo