Back

Clone superficial do Git: o que é, quando usar e como

Clone superficial do Git: o que é, quando usar e como

Clonar um repositório com git clone normalmente extrai todo o histórico de commits. Mas e se você não precisar do histórico completo? É aí que entram os clones superficiais. Neste artigo, explicaremos o que é um clone superficial, como ele funciona e quando faz sentido usá-lo — com exemplos prontos para copiar e colar.

Principais Pontos

  • Um clone superficial limita a quantidade de histórico buscado durante o git clone
  • É ideal para CI, repositórios grandes ou configurações rápidas
  • Aprenda a usar --depth, --single-branch e --shallow-since

O que é um clone superficial no Git?

Um clone superficial é um clone Git que extrai apenas parte do histórico de um repositório em vez de tudo desde o início. Isso reduz significativamente o tamanho e o tempo de download. É especialmente útil quando:

  • Você não precisa do histórico completo de commits
  • Você quer uma configuração mais rápida para pipelines de CI/CD
  • Você está trabalhando com repositórios grandes

Clone superficial vs clone normal

Característica Clone Normal Clone Superficial Busca todo o histórico Sim Não (commits limitados) Velocidade de clonagem Mais lenta Mais rápida Operações Git (rebase, bisect) Totalmente suportadas Algumas limitações Ideal para CI/CD Não é ótimo Sim

Como realizar um clone superficial

Clonar apenas o commit mais recente

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

Clonar um branch específico com histórico limitado

git clone --depth=1 --branch main --single-branch https://github.com/owner/repo.git

Clonar commits a partir de uma data específica

git clone --shallow-since="2024-01-01" https://github.com/owner/repo.git

Você também pode usar --filter=blob:none com clones parciais se quiser pular completamente o download de arquivos grandes.

É possível “desraseificar” um clone superficial?

Sim. Se mais tarde você decidir que precisa do histórico completo:

git fetch --unshallow

Isso puxa os commits ausentes e converte seu clone superficial em um completo.

Quando você deve usar um clone superficial?

Use um clone superficial quando:

  • Você só precisa da versão mais recente do código
  • Você está executando pipelines de CI e quer builds mais rápidos
  • Você está inspecionando ou testando código sem precisar do histórico completo

Evite clones superficiais quando:

  • Você precisa executar git bisect, git rebase ou operações de merge
  • Você está contribuindo com alterações e precisa acessar o histórico de commits
  • Você está escrevendo ferramentas que dependem do contexto completo do repositório

Problemas comuns com clones superficiais

Operações Git podem falhar

Alguns comandos assumem o histórico completo e gerarão erros em clones superficiais:

  • git merge-base
  • git rebase
  • git bisect

Solução: Execute git fetch --unshallow ou evite o clone superficial nesses contextos.

Clones superficiais podem quebrar ferramentas de monorepo

Ferramentas como Lerna ou Nx podem assumir acesso total ao histórico de commits do repositório para gráficos de dependência ou pacotes afetados. Teste com sua cadeia de ferramentas específica.

Conclusão

Clones superficiais são uma ótima maneira de acelerar fluxos de trabalho de desenvolvimento, especialmente em CI ou ao trabalhar com repositórios grandes. Apenas esteja ciente das compensações — e você sempre pode “desraseificar” mais tarde, se necessário.

Perguntas Frequentes

Sim. Ele busca menos commits, então é mais rápido para baixar e processar, especialmente em repositórios grandes.

Sim, mas algumas operações relacionadas ao histórico podem falhar, a menos que o clone seja primeiro transformado em completo.

Execute `git fetch --unshallow` para converter seu repositório em um clone completo.

Sim — na verdade, o GitHub Actions usa clones superficiais por padrão (com `fetch-depth: 1`).

Listen to your bugs 🧘, with OpenReplay

See how users use your app and resolve issues fast.
Loved by thousands of developers