An Interest In:
Web News this Week
- April 26, 2024
- April 25, 2024
- April 24, 2024
- April 23, 2024
- April 22, 2024
- April 21, 2024
- April 20, 2024
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
- Encontrar la ubicacin o "path" del archivo dentro del repositorio
- Recorrer cada branch y commit
- 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
$ git filter-repo --path ./web/.env --invert-paths
Despus de esta operacin puedes actualizar tu repositorio remoto
git push --all -f
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
Dev To
An online community for sharing and discovering great ideas, having debates, and making friendsMore About this Source Visit Dev To