Cómo revertir archivos y carpetas individuales a versiones anteriores en Git


Git es una herramienta poderosa para rastrear cada versión de su base de código y, a menudo, es necesario mirar hacia atrás en el tiempo y recuperar versiones antiguas de archivos. Git puede revertir confirmaciones completas o restablecer todo el repositorio, pero también puede revertir cambios en un solo archivo o carpeta.

Revertir vs Restablecer

Por lo general, cuando «reviertes» una confirmación, Git aplica una nueva confirmación aplicando los cambios opuestos, cancelándola efectivamente. Esto es útil si comete un error y necesita «eliminar» esa confirmación, aunque todavía está registrada en el historial.

Restablecer el repositorio es un poco diferente. Solo puede revertir una confirmación a la vez, pero si hace una git reset, Git cambiará por completo el estado del repositorio a cuando se realizó la confirmación. Esto se hace por muchas razones, generalmente para eliminar confirmaciones o corregir el historial de sucursales.

Ambas operaciones funcionan en todo el repositorio, pero también puede usar comandos similares para realizar las mismas acciones en archivos o carpetas individuales. Por ejemplo, usando git reset en un solo archivo volverá a establecer ese archivo como estaba cuando se realizó la confirmación. Esto es útil si solo desea seleccionar una versión anterior del archivo de su historial de Git.

RELACIONADO: ¿Cómo funciona realmente el restablecimiento de Git? Restablecimientos suaves, duros y mixtos explicados

RELACIONADO: Cómo corregir, editar o deshacer confirmaciones de Git (cambio del historial de Git)

Mirando versiones antiguas en Git

La solución de baja tecnología para volver a configurar un archivo como solía ser es bastante simple: Github y la mayoría de los otros servidores Git realizan un seguimiento de su historial de archivos, y puede simplemente hacer clic en un compromiso y hacer clic en «Examinar archivos» para ver un instantánea de su repositorio desde atrás en el tiempo. A continuación, puede descargar el archivo o copiar el texto.

Esto es especialmente útil si está trabajando con archivos de código grandes y desea ver versiones anteriores de funciones que escribió. Probablemente no desee revertir todo en ese caso, solo la función única. Puede copiar el código de esa función sin tocar la CLI de Git.

Restablecer un archivo a una versión anterior en Git

En este repositorio de prueba, hicimos una confirmación que editó el README y agregó un nuevo archivo. Queremos revertir los cambios realizados en el LÉAME, pero no queremos restablecer todo el repositorio a la confirmación inicial.

La solución es restablecer solo el LÉAME revisando una versión anterior de ese archivo. de Git checkout El comando hace muchas cosas, como cambiar de rama, pero básicamente se usa para descargar archivos con un ID de confirmación o rama.

Para restablecer un archivo a una versión anterior, deberá encontrar el ID de compromiso desde el que desea restablecerlo. Puedes usar git log para esto, alcance un solo archivo para ver solo los cambios realizados en ese archivo:

git log README.md

Copie el ID para la confirmación y luego ejecute git checkout con el ID y la ruta del archivo:

git checkout 22710694b25d7ce5297559851beb7d3e4de811bb README.md

Esto volverá a cambiar el archivo, pero no confirmará los cambios todavía. Eres libre de editarlo y confirmarlo cuando estés listo.

En este ejemplo, git checkout organizó los cambios para la próxima confirmación. Si no desea confirmarlos, puede descartar los cambios. Esto puede ser útil para descargar versiones antiguas de archivos temporalmente sin el uso de Github.

Reversión de cambios a archivos individuales

Del mismo modo, si desea revertir los cambios en una sola confirmación, puede hacerlo con git revert. Sin embargo, no hay forma de aplicarlo a un solo archivo, pero simplemente puede descartar los cambios si la confirmación afecta a otros archivos.

Utilizar el --no-commit marca para permitir la edición de la «reversión de confirmación» que Git crea automáticamente.

git revert de8564b131ca6a15a7e7c73f5ef156b119cc0b93

Esto le permitirá cambiar los archivos antes de finalizar la reversión. Si hay cambios no deseados preparados, puede eliminarlos a través de su cliente o con un formulario vacío git checkout.

git checkout -- file





Source link-39