Ter o histórico completo de revisões do Git traz muitos benefícios como parte do processo de desenvolvimento.
Mas nosso produto é o código-fonte, estamos usando linguagens de script que não precisam de compilação ou processamento e, em seguida, o histórico do Git se torna um fardo na implantação - em nosso exemplo, implantamos um ambiente virtual limpo após cada alteração, com várias implantações em uma única máquina.
Existem algumas maneiras de reduzir a quantidade de histórico, por exemplo, clones rasos cuja eficiência depende de quão profunda é a revisão na ramificação, fazendo uma busca em vez de clone, mas você ainda obtém o histórico da revisão e volta, ou obtendo o resultado completo. repo uma vez puxe quando necessário, mas isso é um desperdício em termos de espaço em disco e tende a ser menos confiável.
Existe uma maneira de obter uma única revisão do Git sem a sua história?
Respostas:
Clone raso
Você pode realmente obter um clone superficial do Git usando:
Isso ainda clonará o repositório e criará uma
.git
pasta com os objetos, apenas de tamanho menor (diferença dependendo do tamanho total do arquivo x do histórico).Arquivo Git
Você também pode usar o git-archive para extrair um archive do repositório:
Nos exemplos que mostra, por exemplo:
Git hospedado, API de arquivamento
Se você estiver hospedando seu repositório no GitHub, poderá usar a API de arquivamento deles :
https://api.github.com/repos/<username>/<repository>/zipball/<commit_hash>
O Bitbucket.org tem uma mesma funcionalidade para isso:
https://bitbucket.org/<username>/<repository>/get/<branch_name|commit_hash|tag>.zip
fonte
Não implante seu repositório git. Desenvolva uma metodologia de implantação real. Mesmo que seja tão simples quanto ordenar um arquivo morto (= construir um artefato com apenas os arquivos necessários para serem implantados) de scripts implementados.
Mesmo se você clonar superficialmente a ponta do seu repositório de origem, provavelmente não precisará de testes de unidade, documentação, perfis de fiapos e outras coisas efêmeras de suporte em seu ambiente implementado.
Nota : para repositórios de linguagens de script que realmente não possuem uma etapa de "construção", uma maneira trivial de liberar um artefato seria empacotá-los em um archive, como tar ou rpm. Em seguida, para "implantar", você descompacta o arquivo morto ou instala o rpm. isso elimina a necessidade de ferramentas git em sua cadeia de implementação (nem todos os servidores prod terão essas ferramentas de desenvolvimento).
fonte
Para obter um repositório, não, não há como, principalmente porque não há 'revisão'. As confirmações da loja Git, que são alterações do estado anterior.
Se você deseja que seu repositório esteja em um momento específico, você deve puxar o commit neste momento e todos os seus ancestrais ou obterá apenas as alterações feitas no commit.
Para evitar confusão: a clonagem rasa está obtendo o histórico necessário e, em seguida, truncando-o para liberar espaço, a árvore ainda é feita a partir do histórico.
Para as soluções, a resposta @ 7ochem as cobre.
fonte