Por Anónimo (no verificado) , 29 Abril 2026

El costo de clones completos

Un clone completo de un repositorio de larga vida puede ser de cientos de megabytes. En cada job CI. Multiplicado por cada push.

Fundamentos del clone shallow

git clone --depth=1 https://example.com/repo.git

Shallow con múltiples branches

git clone --depth=1 --no-single-branch https://example.com/repo.git

Clones parciales (Git 2.22+)

git clone --filter=blob:none https://example.com/repo.git
git clone --filter=tree:0 https://example.com/repo.git

Combinando shallow y partial

git clone --depth=1 --filter=blob:none https://example.com/repo.git

Ejemplo de GitHub Actions

- uses: actions/checkout@v4
  with:
    fetch-depth: 1

- name: Get full history when needed
  run: git fetch --unshallow

Limitaciones de shallow

  • No puedes hacer push desde un clone shallow a otro repo sin unshallowing primero.
  • Algunas operaciones (rebase entre el rango faltante, bisect completo) son imposibles.
  • Forks y configuraciones complejas de submódulos pueden interactuar mal con shallow.

Medir

time git clone --depth=1 https://example.com/repo.git
time git clone https://example.com/repo.git

Cachear el resultado

if [ -d .git ]; then
  git fetch --depth=1
  git reset --hard FETCH_HEAD
else
  git clone --depth=1 ...
fi