Usando git para obter apenas a revisão mais recente

380

Eu quero acompanhar um projeto que usa git. Não quero clonar o repositório completo e o histórico completo, apenas a última revisão e quero poder atualizar para novas revisões do projeto remoto.

Eu tentei usar o git clone, mas isso cria uma cópia de todo o repositório (tamanho enorme de arquivo), e o rastreamento de alterações torna o espaço em disco ainda maior (100 MB de arquivos agora ocupam mais de 2 GB).

Não vou enviar patches e não preciso do histórico. Eu só quero a versão mais recente, como no subversion.

Isso é possível no git?

yuit
fonte
2
O Git 1.9 / 2.0 (primeiro trimestre de 2014) será muito mais eficiente com a clonagem superficial: stackoverflow.com/a/21217267/6309 e stackoverflow.com/a/21217326/6309
VonC

Respostas:

552

Use a --depthopção em git clone:

Crie um clone superficial com um histórico truncado para o número especificado de confirmações.

exemplo: git clone --depth=1 <remote_repo_url>

Greg Hewgill
fonte
87
exemplo:git clone --depth=1 <remote_repo_url>
iDev247 15/01
14
Como o commit 82fba2b no git 1.9, essas limitações não existem mais.
Niutech 5/03
11
Que limitações?
Ignorant,
4
@ Triângulos: Limitações (não são mais atuais): Um repositório raso tem várias limitações (você não pode clonar ou buscar dele, nem empurrá-lo nem empurrá-lo), mas é adequado se você estiver interessado apenas no histórico recente de um grande projeto com uma longa história e gostaria de enviar correções como patches.
odinho - Velmont 14/09/16
11
A opção foi adicionadagit 1.8.4 .
ivan_pozdeev
79

A solução alternativa para fazer clone superficial ( git clone --depth=1 <URL>) seria, se o lado remoto suportar, usar a --remoteopção do arquivo git :

$ git archive --format=tar --remote=<repository URL> HEAD | tar xf -

Ou, se o repositório remoto em questão puder ser navegado usando alguma interface da web como gitweb ou GitHub, é possível que ele tenha o recurso 'snapshot' e você poderá fazer o download da versão mais recente (sem informações de versão) da interface da web.

Jakub Narębski
fonte
4
Esta solução não satisfaz esse requisito: "Quero poder atualizar para novas revisões do projeto remoto". Como ele basicamente baixa o arquivo, não poderá avançar rapidamente um commit ou dois. O "clone raso" permite isso. Ainda assim, acho que essa solução tem seus casos de uso, então vale a pena mencionar.
VasiliNovikov