Skip to content
Latchkey

O Que É um Shallow Clone?

Um shallow clone baixa apenas uma fatia limitada do histórico recente em vez do log completo do projeto, tornando os checkouts muito mais rápidos.

Um shallow clone é um clone com o histórico truncado para os commits mais recentes. Para um projeto com anos de histórico, baixar tudo é um desperdício quando você só precisa buildar o código mais recente. Os shallow clones reduzem esse custo drasticamente, e é por isso que o CI os usa por padrão.

Como funcionam os shallow clones

Um shallow clone busca commits apenas até uma profundidade escolhida, omitindo o histórico mais antigo. O Git registra que o histórico está incompleto para que saiba onde está o limite. Os arquivos de trabalho são idênticos aos de um clone completo; apenas os commits históricos por trás deles estão ausentes.

Criando um shallow clone

Você passa uma profundidade para o git clone para limitar quantos commits vêm junto.

A depth-1 shallow clone
git clone --depth 1 https://github.com/owner/project.git

Os tradeoffs

Shallow clones são menores e mais rápidos, mas não têm histórico antigo, então operações que precisam dele, como fazer blame bem para trás ou diff contra uma base antiga, podem falhar ou exigir um passo de aprofundamento. Para a maioria dos jobs de build e teste, o commit mais recente é tudo o que é necessário, então o tradeoff vale muito a pena.

Shallow clones em CI/CD

As actions de checkout do CI usam por padrão um shallow clone, muitas vezes com depth 1, justamente para acelerar o passo mais repetido de qualquer pipeline. Se um job precisa do histórico, por exemplo para calcular um diff contra a branch base, você aumenta a profundidade ou busca mais. Checkouts mais rápidos em runners gerenciados se acumulam em economias reais de tempo em escala.

Quando aprofundar

  • Mantenha depth 1 para jobs simples de build e teste.
  • Aumente a profundidade ao comparar contra uma branch base.
  • Busque o histórico completo para ferramentas que percorrem todo o log.
  • Use shallow clones para cortar o tempo de checkout do CI em repos grandes.

Principais conclusões

  • Um shallow clone busca apenas o histórico recente para acelerar o checkout.
  • Ele omite commits mais antigos, que algumas operações precisam.
  • O CI usa shallow clones por padrão para manter os checkouts rápidos.

Guias relacionados