Eliminar datos sensibles de un repositorio de git
Aunque Git incluye un comando nativo para eliminar datos sensibles de un repositorio, conocido como filter-branch
, existe una herramienta escrita en Java mucho más rápida y sencilla de usar para realizar esta tarea.
Herramienta recomendada: BFG Repo-Cleaner
BFG Repo-Cleaner es una alternativa eficiente y fácil de usar para limpiar un repositorio Git de información sensible. Puedes encontrarla en BFG Repo-Cleaner
Uso básico
Para reemplazar texto sensible en todo el repositorio, como contraseñas, simplemente usa el siguiente comando:
$ bfg --replace-text passwords.txt my-repo.git
Advertencia: El último commit no se verá afectado por este proceso. Para eliminarlo, deberás borrarlo manualmente y luego volver a ejecutar la limpieza.
Cómo verificar que los datos sensibles han sido eliminados
Para asegurarte de que no quedan restos de la información sensible en la historia del repositorio, puedes buscar cadenas específicas en todo el historial de Git. Aunque no es la respuesta más votada, este método ha funcionado en varios casos.
Consulta este enlace de Stack Overflow para más detalles.
El comando es el siguiente:
$ git rev-list --all | GIT_PAGER=cat xargs git grep 'search_string'
Este comando buscará una cadena específica (search_string
) en todos los commits del repositorio, permitiéndote verificar si alguna información sensible permanece en el historial.
Conclusión
Si bien filter-branch
es la herramienta nativa de Git para eliminar datos sensibles, BFG Repo-Cleaner es una opción más rápida y fácil de usar, especialmente para repositorios grandes. Recuerda siempre verificar que no queden rastros de información sensible después de la limpieza, y eliminar manualmente el último commit si es necesario.