Eliminar un archivo del historial

GitGitBeginner
Practicar Ahora

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

💡 Este tutorial está traducido por IA desde la versión en inglés. Para ver la versión original, puedes hacer clic aquí

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.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL git(("Git")) -.-> git/DataManagementGroup(["Data Management"]) git/DataManagementGroup -.-> git/filter("Apply Filters") subgraph Lab Skills git/filter -.-> lab-12747{{"Eliminar un archivo del historial"}} end

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.