Eliminar archivos comprometidos en Git

Abdul Jabbar 21 marzo 2022
Eliminar archivos comprometidos en Git

A veces nos damos cuenta de que necesitamos averiguar manualmente qué archivos son importantes para el commit actual y eliminar los no deseados del directorio de trabajo. Puede ser difícil para los procesos manuales, especialmente si construimos un proyecto grande con muchos desarrolladores en un equipo.

Supongamos que hemos confirmado el archivo incorrecto en el repositorio y queremos eliminarlo de la rama. El comando git reset es una herramienta útil cuando se trata de Git. Este comando se usa para eliminar un archivo específico de un commit Git específica o del directorio de trabajo en la rama. Por ejemplo, puede ejecutar el siguiente comando si desea eliminar el archivo "README.md" de el commit a la que apunta HEAD.

git reset -soft HEAD@{1}

Podemos eliminar el archivo de un commit específica y mantener los cambios en el directorio de trabajo ejecutando el siguiente comando.

git reset HEAD@{1}

Como sabemos, el comando utilizado para eliminar archivos de un commit es git reset. Este comando se puede utilizar con las opciones -p y -u. La opción -p nos permite mantener los cambios en el directorio de trabajo pero restablecer el índice. La opción -u restablece el índice y el directorio de trabajo.

Practiquemos la eliminación de archivos de un commit con el siguiente ejemplo. Supongamos que hemos creado un nuevo commit y agregado un archivo llamado file1. Ahora, queremos eliminar este archivo de el commit. Podemos comenzar esto usando el siguiente comando.

git reset -p HEAD~1

Este comando ordena a Git que restablezca el índice y el directorio de trabajo de nuevo al commit HEAD~1. Antes de crear el compromiso, agregamos el file2 al directorio de trabajo. Ahora, queremos eliminar este archivo del directorio de trabajo pero mantenerlo en el índice. Se puede iniciar con el siguiente comando:

git reset -u HEAD~1

Este comando ordena a Git que restablezca el índice y el directorio de trabajo al commit HEAD~1. Ahora, supongamos que hemos agregado tres archivos al índice y queremos eliminar todos los archivos del índice excepto file3. Podemos comenzar esto usando el siguiente comando:

git reset -- '-p -- file3'

Este comando le ordena a Git que mantenga el file3 y elimine los otros archivos del índice dentro de la misma rama. El comando git reset se puede usar para eliminar archivos de cualquier confirmación. El comando se puede usar con la opción -p para mantener los cambios en el índice y el directorio de trabajo y eliminar el archivo de el commit.

El comando también se puede usar con la opción -u para restablecer el índice y el directorio de trabajo pero mantener el archivo en el commit.

Si queremos eliminar un archivo de un commit específica, podemos usar el comando git reset con la opción -hard y especificar el commit después de HEAD. Por ejemplo, podemos ejecutar el siguiente comando si queremos eliminar el archivo "README.md" de la prueba de commit.

git reset -hard test

Tenga en cuenta que el comando git reset --hard descarta cualquier cambio que haya realizado en su directorio de trabajo. Si editó algunos archivos y eliminó otros, el último comando eliminaría cualquier cambio que haya realizado en los archivos que todavía están presentes en su área de ensayo.

Sin embargo, supongamos que no queremos el archivo y queremos eliminarlo del área de preparación y convertirlo en un archivo sin seguimiento. En ese caso, usaremos el comando git rm con la opción --cached. Si además queremos eliminarlo del directorio de trabajo, saltaremos la opción --cached de ese comando.

$ git rm --cached <file-name>

Aquí casi hemos terminado con el proceso de recuperación de archivos. El archivo irrelevante se eliminó del área de preparación y todos los demás cambios se prepararon. Ahora, tenemos que confirmar estos cambios usando el comando git commit en la rama. Ahora hemos recuperado nuestro commit, pero esto no incluye los archivos que no son necesarios.

$ git commit -m "commit message"
Abdul Jabbar avatar Abdul Jabbar avatar

Abdul is a software engineer with an architect background and a passion for full-stack web development with eight years of professional experience in analysis, design, development, implementation, performance tuning, and implementation of business applications.

LinkedIn

Artículo relacionado - Git Commit