git filter-branch

Avanzado Avanzado

Reescribe el historial de git aplicando filtros personalizados

Uso

git filter-branch --env-filter|--tree-filter|--index-filter <comando>

Ejemplos

  • git filter-branch --env-filter "export GIT_AUTHOR_EMAIL=nuevo@email.com"

    Cambia el email del autor en todo el historial

    advanced
  • git filter-branch --tree-filter "rm -f passwords.txt"

    Elimina un archivo de todo el historial

    advanced
  • git filter-branch --index-filter "git rm --cached --ignore-unmatch archivo-grande.zip"

    Elimina un archivo grande del historial eficientemente

    advanced
  • git filter-branch -f --prune-empty

    Elimina commits vacíos después del filtrado

    advanced

Notas

  • Herramienta poderosa para limpiar o modificar el historial
  • Más eficiente que realizar cambios commit por commit

Advertencias

  • ¡PELIGROSO! Reescribe completamente el historial del repositorio
  • Nunca uses en ramas públicas sin coordinar con el equipo

Consejos

  • Haz una copia de seguridad antes de usar filter-branch
  • Considera git-filter-repo como alternativa moderna

Comandos Relacionados