Skip to main content

Git — archivos grandes (BFG/LFS)

Problema

GitHub bloquea el push por archivos >100 MB en historia (aunque hoy ya no estén en HEAD). Necesitás verificar si siguen referenciados y purgarlos correctamente.

Verificaciones rápidas

# 1) ¿Qué se va a empujar?
git diff --stat origin/main main

# 2) ¿Sigue en la historia?
git log -- path/grande.csv

# 3) Objetos y tamaños del commit actual
git ls-tree -r -l HEAD | sort -k4 -n | tail

# 4) Objetos huérfanos (post-limpieza)
git fsck --dangling

# 5) Tamaño del repositorio (orientativo)
du -sh .git/

Si aparece en (1) o (2), sigue en el diferencial que vas a empujar. (3–5) ayudan a confirmar limpieza y a diagnosticar bloat.

Remedios (elige según impacto)

A. Reescribir commits recientes (squash / interactive rebase)

  • Compactá los commits donde se agregó y luego se borró.
  • Luego remové los pesados del staging y force push.
  • Avisar al equipo (todos deberán re-clone/reset).

B. Purgado histórico (BFG o filter-branch)

  • BFG Repo-Cleaner (preferido por simplicidad) o git filter-branch.
  • Reescribe historia, requiere --force al pushear.
  • Post-limpieza: git gc y verificación con git fsck --dangling.

C. Si están untracked pero molestan

  • Eliminá los archivos del working dir para evitar commits accidentales.
  • Considerá .gitignore o Git LFS si debés versionarlos.

Contrato mínimo (política)

  • No versionar binarios >50 MB en repos de código.
  • Artefactos → releases/almacenamiento externo; o Git LFS si es imprescindible.
  • Toda reescritura de historia: anuncio + plan de re‐sync para el equipo.