Git Pie: A Arte Ancestral do Versionamento 🥧 Help

Git Garbage Collection: Mantendo o Repositório Otimizado

+------------------------+ | Garbage Collection | | | | Cleanup + Optimization | | Pack + Compress | | Maintain Performance | | | | git gc | +------------------------+

Como Funciona

Processo Básico

Empacotamento

Limpeza

Remoção

Objetos Soltos

Packfiles

Refs Antigas

Refs Atuais

Objetos Órfãos

Objetos Referenciados

Gatilhos Automáticos

+------------------+ | TRIGGERS | +------------------+ | • Push | | • Fetch | | • Merge | | • Threshold | +------------------+

O que é Coletado

Tipos de Objetos

GCObjetosRefsPackfilesUnreachableDanglingObsoletasQuebradasRedundantesAntigos

Processo de Coleta

ReferenciasPackfilesLoose ObjectsReferenciasPackfilesLoose ObjectsCompactaçãoLimpezaOtimização

Comandos Principais

Comandos Básicos

# GC básico git gc # GC agressivo git gc --aggressive # GC automático git gc --auto # Prune git prune

Configurações

# Ajustar threshold git config gc.auto 256 # Frequência de auto-gc git config gc.autoPackLimit 50 # Expiração de objetos git config gc.pruneExpire "2.weeks.ago"

Otimização de Performance

Estratégias

+----------------------+ | OTIMIZAÇÕES | | | | • Delta compression | | • Repack | | • Prune | | • Reflog expire | +----------------------+

Comandos Avançados

# Repack otimizado git repack -ad # Expirar reflog git reflog expire --expire=now --all # Verificar objetos git fsck --full # Estatísticas git count-objects -v

Manutenção Programada

Rotina de Manutenção

fsck

repack

Verificação

Verificação

GC

Prune

Agendamento

# Iniciar manutenção git maintenance start # Configurar agenda git maintenance register # Executar agora git maintenance run --task=gc

Troubleshooting

Problemas Comuns

+----------------------+ | PROBLEMAS | | | | • GC muito lento | | • Espaço em disco | | • Objetos perdidos | | • Performance | +----------------------+

Diagnóstico

# Verificar objetos git fsck --unreachable # Analisar packfiles git verify-pack -v .git/objects/pack/*.idx # Encontrar objetos grandes git rev-list --objects --all | git cat-file --batch-check

Boas Práticas

Recomendações

  1. GC regular

  2. Backup antes de GC agressivo

  3. Monitorar tamanho

  4. Verificar integridade

Configurações Recomendadas

# Para repos grandes git config gc.auto 1024 git config gc.autoPackLimit 100 git config gc.pruneExpire "1.month.ago"

Monitoramento

Métricas Importantes

MétricasTamanhoObjetosPerformanceRepositórioPackfilesSoltosEmpacotadosCloneFetch

Comandos de Monitoramento

# Estatísticas detalhadas git count-objects --verbose # Tamanho dos packfiles du -sh .git/objects/pack/ # Objetos grandes git verify-pack -v .git/objects/pack/*.idx | sort -k 3 -n | tail -10

Próximos Passos

Tópicos Relacionados

22 abril 2025