Guardar el día con Git y eliminar del historial de commits

¿Has encontrado algún error o enfrentado problemas con los commits de Git mientras trabajabas con él? Tal vez se haya guardado accidentalmente algún secreto o datos sensibles. Afortunadamente, puedes procesar tus archivos con Git y quitarlos del commit para corregir el historial.

Si has realizado varios commits o clonado un repositorio con un historial de commits ya existente, probablemente quieras retroceder y ver todos los commits realizados. Y en este tutorial, aprenderás cómo quitar una entrada de tu historial de Git.

Sigue leyendo y salva el día con Git!

**Prerrequisitos**

Este tutorial consta de instrucciones paso a paso. Si quieres seguirlo, asegúrate de tener lo siguiente en su lugar:

  • A local machine to test the Git commands – This tutorial uses Windows 10, but later versions will also work.
  • Git Bash – Este tutorial utiliza Git Bash 2.36.

Quitar un Archivo de un Commit de Git

Cuando trabajas en Git como equipo, haces cientos de commits diarios. Como resultado, hay muchas posibilidades de que necesites deshacer un commit en particular, como debido a un archivo incorrecto o varios archivos. Esta necesidad suele ser causada por un cambio en el código o la configuración y se convierte en un problema.

Para resolver este problema, deberás quitar el archivo o archivos del commit de Git ejecutando comandos de Git. Utilizarás una de las herramientas populares para quitar un solo archivo del commit de Git, la herramienta Git Bash.

1. Abre la herramienta Git Bash en tu máquina Windows.

2. Luego, ejecuta el siguiente comando para crear una carpeta de repositorio y cambiar a esa carpeta. Estos comandos no proporcionan salida en la terminal. Pero asegúrate de reemplazar ~/Escritorio/Repositorio/repo1 con la ruta y el nombre de carpeta que prefieras.

# Crea la carpeta del repositorio y la subcarpeta repo1
mkdir -p ~/Desktop/Repository/repo1
# Cambia el directorio de trabajo a repo1
cd ~/Desktop/Repository/repo1

3. Ejecuta los siguientes comandos para inicializar tu repositorio y crear dos archivos de texto llamados test1.txt y test2.txt.

# Inicializa el repositorio local (creando una carpeta oculta .git)
git init
# Crea dos archivos de texto
touch test_file1.txt test_file2.txt
Initializes the local repository

4. Ahora, ejecuta el siguiente comando para verificar el estado del commit de Git.

git status

Después de ejecutar el comando, notarás que los commits no están rastreados y aún no se han realizado, como se muestra a continuación.

Checking the status of Git commits on the Git terminal

5. Ejecuta el comando git add a continuación para agregar los dos archivos de texto que creaste en el paso tres (test_file1.txt y test_file2.txt) a tu repositorio local.

Este comando no proporciona una salida pero agrega los archivos sin enviarlos al repositorio remoto.

git add .

6. Luego, ejecuta el comando git commit a continuación para que Git lleve un seguimiento del progreso y los cambios que hiciste en el repositorio local.

git commit -m "Adding two new files test_file1.txt and text_file2.txt"
Committing Changes to Repository

7. Después de hacer commit, ejecuta el siguiente comando para eliminar un archivo específico (test_file2.txt) del commit de Git.

git rm --cached test_file2.txt
Removing a Specific File from the Git Commit

8. Por último, vuelve a ejecutar el comando git status a continuación para verificar el estado del repositorio.

git status

Como puedes ver a continuación, el archivo ha sido eliminado del área de preparación (el commit de Git) y muestra el archivo (test_file2.txt) bajo Archivos sin seguimiento.

Verifying the Removed Git Commit (test_file2.txt)

Eliminación de todos los archivos commitidos recientemente

Acabas de aprender a eliminar un archivo específico del commit de Git. Pero típicamente, tendrás que eliminar varios archivos, y Git está preparado para ello con el comando git reset. El comando git reset es una herramienta compleja pero, al mismo tiempo, versátil para deshacer cambios en el repositorio.

Para ver cómo funciona el git reset, harás commit de un par de archivos, luego resetearás los cambios para eliminar los archivos commitidos recientemente almacenados en el commit de Git:

1. Crea dos archivos de texto nuevos llamados test_file3.txt y test_file4.txt en la carpeta ~/Desktop/Repository/repo1.

touch test_file3.txt test_file4.txt

2. A continuación, ejecuta el comando git add a continuación, que no proporciona una salida pero agrega los nuevos archivos de texto a tu repositorio local (~/Desktop/Repository/repo1).

git add .

3. Ejecuta el comando git commit a continuación para hacer commit de los archivos para que Git lleve un seguimiento del progreso y los cambios que has realizado en el repositorio.

git commit -m "Adding two more files"
Committing Changes to the Repository

4. Ahora, ejecuta el siguiente comando para verificar el estado de tu repositorio local.

git status

Como puedes ver a continuación, la salida muestra el mensaje “nothing to commit”, indicando que todo está en su lugar en el repositorio.

Checking the Status of Git Commits

5. A continuación, ejecuta el comando git reset que se muestra a continuación para revertir los commits realizados recientemente en el paso tres. Este comando no proporciona salida, pero elimina los archivos test_file3.txt y test_file4.txt.

git reset --soft HEAD~1

También puedes usar git reset –soft HEAD^ para eliminar todos los archivos que se han cometido hasta ahora.

6. Luego, vuelve a ejecutar el comando git status que se muestra a continuación para verificar el estado del repositorio.

git status

A continuación, la salida muestra los archivos test_file3.txt y test_file4.txt que deben ser cometidos. Esta salida indica los archivos que deben eliminarse del commit de Git.

Verifying the Recent Commits were Removed

Eliminar Commits Específicos del Historial de Git

Eliminar todos los archivos cometidos funciona perfectamente si deseas empezar de nuevo. Pero, ¿qué pasa si solo necesitas eliminar un commit en particular? El comando git revert hará el truco siempre y cuando conozcas la ID del commit.

En el último paso de la sección “Eliminación de Todos los Archivos Recientemente Cometidos”, notaste que los commits no se cometieron pero cambiaron. Ahora, cometerás los cambios para ver el comando git revert en acción.

Ejecuta el comando git commit a continuación para cometer los cambios recientes en tu repositorio local.

git commit -m "Hello, I am committing those two files again"

Después de ejecutar el comando, notarás que ambos archivos de texto se han vuelto a comprometer, y el ID de compromiso es 0315b85, como se muestra a continuación.

Committing the Changes in the Local Repository

Ahora, ejecuta el comando git revert a continuación para revertir el compromiso que hiciste en el paso anterior. Asegúrate de reemplazar 0315b85 con el ID de tu compromiso.

git revert 0315b85

A continuación, puedes ver que se han eliminado dos archivos que comprometiste recientemente.

Reverting the Changes in the Local Repository

Eliminando un Directorio del Historial de Compromisos de Git

En este punto, ya sabes cómo eliminar un archivo comprometido, pero ¿qué hay de un directorio? Eliminar un directorio de un compromiso de Git es similar a eliminar archivos.

1. Ejecuta los siguientes comandos, que no proporcionan salida pero realizan lo siguiente:

  • Crea una carpeta llamada myfolder dentro de tu repositorio local (~/Desktop/Repository/repo1).
  • Crea un archivo llamado l.txt dentro de la carpeta ~/Desktop/Repository/repo1/myfolder.
mkdir myfolder && touch myfolder/l.txt

2. A continuación, ejecuta los comandos git a continuación para agregar la nueva carpeta (~/Desktop/Repository/repo1/myfolder) a tu repositorio local.

git add .
git commit -m "Adding folder"
Adding the new folder (folder) to the Local Repository

3. Ejecuta el siguiente comando git rm para eliminar la carpeta (myfolder) que comprometiste en el paso dos.

git rm -r myfolder/
Removing the New Folder (folder) in Git Commit

4. Finalmente, ejecuta el comando git status para verificar el estado del repositorio y ver si la carpeta se ha eliminado.

git status

A continuación, puedes ver que toda la carpeta (myfolder) se ha eliminado correctamente, junto con el archivo l.txt dentro.

Verifying the Folder (myfolder) Has Been Removed Successfully

Conclusión

En este tutorial, has aprendido a trabajar con commits de Git, como eliminar un commit específico, un archivo o varios archivos. También has abordado la eliminación de una carpeta completa dentro del repositorio local y has realizado la confirmación de los cambios.

En este punto, puedes realizar con confianza commits en tu repositorio y eliminar commits que consideres innecesarios sin complicar las cosas.

Con lo que has aprendido en este tutorial, ¿qué método crees que podría ser excelente para trabajar con commits en tu equipo?

Source:
https://adamtheautomator.com/git-and-remove-from-commit/