Eliminar un archivo del historial

Beginner

This tutorial is from open-source community. Access the source code

Introducción

Git es un popular sistema de control de versiones que permite a los desarrolladores rastrear los cambios en su código base. Sin embargo, a veces es necesario eliminar completamente un archivo del historial del repositorio. Esta práctica te guiará a través del proceso de eliminar un archivo del historial de Git.

Este es un Guided Lab, que proporciona instrucciones paso a paso para ayudarte a aprender y practicar. Sigue las instrucciones cuidadosamente para completar cada paso y obtener experiencia práctica. Los datos históricos muestran que este es un laboratorio de nivel principiante con una tasa de finalización del 94%. Ha recibido una tasa de reseñas positivas del 90% por parte de los estudiantes.

Eliminar un archivo del historial

Supongamos que accidentalmente has cometido un archivo que contiene información sensible, como claves de API o contraseñas, en tu repositorio de Git. Te das cuenta de que este archivo nunca debió haber sido cometido y quieres eliminarlo completamente del historial del repositorio. Sin embargo, simplemente eliminar el archivo y cometer el cambio no lo eliminará del historial del repositorio. El archivo todavía será accesible en commits anteriores, lo que podría representar un riesgo de seguridad.

Para completar esta práctica, usarás el repositorio de Git git-playground de tu cuenta de GitHub, que proviene de un fork de https://github.com/labex-labs/git-playground.git. Este repositorio contiene un archivo llamado file1.txt que nunca debió haber sido cometido. Para eliminar file1.txt del historial del repositorio, sigue estos pasos:

  1. Clona el repositorio en tu máquina local:
git clone https://github.com/your-username/git-playground
  1. Usa los siguientes comandos para navegar al directorio y configurar la identidad:
cd git-playground
git config --global user.name "your-username"
git config --global user.email "your-email"
  1. Elimina el archivo del índice del repositorio.
git rm --cached --ignore-unmatch file1.txt
  1. Comete este cambio con el mensaje de commit "Eliminar archivo sensible file1.txt":
git commit -m "Eliminar archivo sensible file1.txt"
  1. Reescribe el historial del repositorio, eliminando todas las instancias de file1.txt:
git filter-branch --force --index-filter "git rm --cached --ignore-unmatch file1.txt" --prune-empty --tag-name-filter cat -- --all
  1. Empuja las modificaciones con fuerza al repositorio remoto:
git push origin --force --all

Después de completar estos pasos, file1.txt se eliminará completamente del historial del repositorio y después de ejecutar git log --remotes, no verás el commit en file1.txt.

Resumen

Eliminar un archivo del historial de Git es un paso necesario cuando se ha cometido accidentalmente información sensible. Esta práctica te ha guiado a través del proceso de eliminar un archivo del historial de Git usando el comando git filter-branch. Recuerda tener precaución al reescribir el historial de un repositorio, ya que puede tener consecuencias no deseadas.