Your Web News in One Place

Help Webnuz

Referal links:

Sign up for GreenGeeks web hosting
June 27, 2022 08:29 pm GMT

Git: Cmo eliminar un archivo de la historia?

Git es una herramienta asombrosa, y que ciertamente cambi la forma en que desarrollamos software, y la llegada de Github aos atrs cambi la forma en que compartimos nuestros desarrollos.

Pero - siempre hay un pero - al hacer nuestro cdigo fuente pblico, es fcil caer en ciertos errores o problemas relacionados con informacin sensible.

Cuntas veces has agregado a un commit y subido al repositorio un archivo que se supone no debera ser pblico?

Para evitar esto existe el archivo .gitignore que te permite configurar que archivos ignorar a la hora de hacer commits

Y si esto te ha pasado, sabes que no slo sirve eliminar el archivo en un nuevo commit, ya que git almacena todo el historial de tu repositorio, lo que permite el acceso al achivo de igual manera.

Entonces, Cmo eliminas totalmente esta informacin?

Lo que realmente quieres es, re-escribir la historia de tu repositorio para as eliminar toda referencia a dicho archivo.

Para esto necesitas

  1. Encontrar la ubicacin o "path" del archivo dentro del repositorio
  2. Recorrer cada branch y commit
  3. Eliminar el archivo en cada branch

Dependiendo del tamao de tu repositorio esto puede tomar bastante tiempo.

Supongamos que quieres remover un archivo .env que agregaste por equivocacin, y este se encuentra en el directorio web/.env.

En tu terminal, en el directorio root de tu repositorio ejecuta:

$ git filter-branch --index-filter "git rm -rf --cached --ignore-unmatch ./web/.env" HEAD

Al ejecutar esta operaicn vers que en la terminal se mostrar un mensaje indicando que esta herramienta podra traer algunos problemas (hasta ahora no he notado ninguno)

WARNING: git-filter-branch has a glut of gotchas generating mangled history
rewrites. Hit Ctrl-C before proceeding to abort, then use an
alternative filtering tool such as 'git filter-repo'
(https://github.com/newren/git-filter-repo/) instead. See the
filter-branch manual page for more details; to squelch this warning,
set FILTER_BRANCH_SQUELCH_WARNING=1.

En este mensaje se indica que existe una herramienta alternativa llamada filter-repo que puedes encontrar en github

Una vez instalada (puedes usar brew para macOS o pip) puedes utilizarla con el siguiente comando en tu terminal

Revisa ms sobre la instalacin

$ git filter-repo --path ./web/.env --invert-paths

Despus de esta operacin puedes actualizar tu repositorio remoto

git push --all -f
Footer Social Card.jpg
nete a Micro-bytes Sgueme en Twitter Apoya mi trabajo


Original Link: https://dev.to/matiasfha/git-como-eliminar-un-archivo-de-la-historia-mpp

Share this article:    Share on Facebook
View Full Article

Dev To

An online community for sharing and discovering great ideas, having debates, and making friends

More About this Source Visit Dev To