DEV Community

Daniel Wildt
Daniel Wildt

Posted on

Copiar só parte de um repositório

Estava fazendo umas provas de conceito e queria iniciar um novo projeto a partir de uma parte de um repositório.

Copiar a pasta simplesmente vai trazer histórico e arquivos de controle git que eu não tenho interesse em trazer.

Temos algumas opções. Uma manual e outra usando o mesmo comando via terminal. Estou usando como exemplo um repositório que tenho para estudar algumas coisas de golang.

Meu objetivo é pegar um conteúdo de um dos testes, chamado "vibe-certificados" e criar um repositório novo só para este projeto.

Vamos aos caminhos possíveis.

Manual

Em qualquer repositório no github a gente consegue fazer download do conteúdo.

imagem do github mostrando opção para baixar código em zip

Com isso, depois eu vou descompactar o arquivo zip e copio o que preciso para dentro do novo repositório git e estou pronto para seguir.

Git Archive

Existe um comando via terminal (git archive) que podemos fazer para justamente realizar a mesma operação em um repositório git. Aí a forma de conectar depende se seu projeto usa https ou ssh.

O comando recebe um dos remotes, o branch que quero usar, um caminho e já indica que na saída, quero gerar um arquivo tar (compactado).

https:
git archive --remote=https://github.com/dwildt/gosandbox.git main vibe-certificados | tar -x

ssh:
git archive --remote=git@github.com:dwildt/gosandbox.git main vibe-certificados | tar -x

Via curl

curl -L https://github.com/dwildt/gosandbox/archive/main.tar.gz | tar -xz --strip-components=1 gosandbox-main/vibe-certificados

Como o repositório está público, esse comando vai funcionar tranquilamente. E dependendo do que se quer fazer, pode ser mais simples mesmo.

Estou em alguns casos criando alguns templates. Seja de arquivos de configuração ou templates de projetos para iniciar algo de forma mais rápida.

-- Daniel Wildt

Top comments (0)