git clone

Aqui, vamos examinar o comando git clone em profundidade. O git clone é um utilitário de linha de comando que é usado para selecionar um repositório existente e criar um clone ou cópia do repositório alvo. Nesta página, vamos discutir opções de configuração estendidas e casos de uso comuns do git clone. Alguns dos pontos que vamos cobrir aqui são:

  • Clonar um repositório local ou remoto
  • Clonar um repositório vazio
  • Usar opções rasas para clonagem parcial dos repositórios
  • Sintaxe de URL do Git e protocolos suportados

No guia para configurar um repositório, falamos sobre um caso de uso básico do git clone. Esta página vai explorar cenários mais complexos de configuração e clonagem.

Objetivo: cópia de desenvolvimento de colaboração de repositório para repositório

Se um projeto já tiver sido configurado no repositório central, o comando git clonevai ser a maneira mais comum para os usuários obterem uma cópia de desenvolvimento. Assim como o git init, a clonagem é em geral uma operação única. Depois que um desenvolvedor obtém uma cópia de trabalho, todas as operações e colaborações de controle de versão são gerenciadas através do repositório local.

Colaboração de repositório para repositório

É importante entender que a ideia do Git da “cópia ativa” é muito diferente da cópia ativa obtida ao conferir o código do repositório SVN. Diferente do SVN, o Git não faz distinção entre a cópia ativa e o repositório central — eles são todos repositórios do Git verdadeiros.

Isso torna a colaboração com o Git, em sua essência, diferente da colaboração com o SVN. Enquanto o SVN depende da relação entre o repositório central e a cópia ativa, o modelo de colaboração do Git é baseado na interação de repositório para repositório. Em vez de verificar uma cópia ativa no repositório central do SVN, você faz o push ou pullde commits de um repositório para outro.

Tutorial do Git: colaboração de repositório para cópia de trabalho Tutorial do Git: colaboração de repositório para repositório

Claro que nada impede que você dê um significado especial a determinados repositórios do Git. Por exemplo, ao apenas designar um repositório do Git como repositório “central”, é possível replicar um fluxo de trabalho centralizado usando o Git. O ponto é que isto é realizado por convenções em vez de ser ligado ao próprio VCS.

Uso

O git clone é usado sobretudo para apontar para um repositório existente e fazer um clone ou cópia deste repositório no novo diretório, em outro local. O repositório original pode estar localizado no sistema de arquivos local ou em protocolos com suporte a acesso por máquinas remotas. O comando git clone copia um repositório do Git existente. Isso é parecido com a verificação do SVN, com a diferença de que a "cópia de trabalho" é um repositório completo do Git—que tem seu próprio histórico, gerencia seus próprios arquivos e é um ambiente isolado como um todo do repositório original.

Por conveniência, a clonagem cria com agilidade uma conexão remota chamada "origem" apontando para o repositório original. Isso facilita muito a interação com um repositório central. Esta conexão automática é estabelecida criando referências do Git para as cabeças do branch remoto em refs/remotes/origin e inicializando as variáveis de configuração remote.origin.url e remote.origin.fetch.

Um exemplo demonstrando o git clone pode ser encontrado no guia configuração do repositório. O exemplo abaixo demonstra como obter uma cópia local do repositório central armazenado no servidor acessível em example.com usando o nome de usuário SSH john:

git clone ssh://john@example.com/path/to/my-project.git
cd my-project
# Start working on the project

O primeiro comando inicializa um novo repositório do Git na pasta my-project na máquina local e o preenche com o conteúdo do repositório central. Depois disso, você pode fazer a implementação contínua no projeto e começar a editar os arquivos, fazer o commit de snapshots e interagir com outros repositórios. Observe também que a extensão .git é omitida do repositório clonado. Isto reflete o estado diferente de vazio da cópia local.

Clonar para uma pasta específica

git clone <repo> <directory>

Clone o repositório localizado em <repo> para dentro do diretório chamado ~<directory>! na máquina local.

Clonar uma tag específica

git clone --branch <tag> <repo>

Clonar o repositório localizado em <repo> e clonar apenas a ref para <tag>.

Clone superficial

git clone -depth=1 <repo>

Clona o repositório localizado em <repo> e clona apenas o 
o histórico de commits especificado pela opção depth=1. Neste exemplo, um clone do <repo> é feito e apenas o commit mais recente é incluído no novo repositório clonado. A clonagem rasa é mais útil ao trabalhar com repositórios que têm um histórico de commits extenso. Um extenso histórico de commits pode causar problemas de escala, como limites de uso de espaço em disco e longos tempos de espera ao clonar. Uma clonagem rasa pode ajudar a aliviar esses problemas de escala.

Opções de configuração

git clone -branch

O argumento -branch permite que você especifique uma branch específica para clonar, em vez do branch que o HEAD está apontando, em geral, o branch principal. Além disso, você pode passar a tag em vez do branch para o mesmo efeito.

 

git clone -branch new_feature git://remoterepository.git

Este exemplo acima clonaria apenas o branch new_feature do repositório do Git remoto. Isto é um utilitário apenas de conveniência, para poupar o tempo de baixar a referência do HEAD do repositório e então ainda ter que buscar a referência que você precisa.

git clone -mirror x git clone -bare

git clone --bare

Similar ao git init --bare, quando o argumento -bare é passado ao git clone, uma cópia do repositório remoto vai ser criada com um diretório de trabalho omitido. Isto significa que um repositório vai ser configurado com um histórico do projeto que pode receber push e pull, mas não pode ser editado com objetividade. Além disso, nenhum branch remoto para o repositório vai ser configurado com o repositório -bare. Assim como o git init --bare, isso é usado para criar um repositório hospedado que os desenvolvedores não vão editar com objetividade.

git clone --mirror

Passar o argumento --mirror também passa o argumento --bare implicitamente. Isto significa que o comportamento do --bare é herdado pelo --mirror. O resultado é um repositório vazio sem arquivos de trabalho editáveis. Além disso, --mirror vai clonar todas as referências estendidas do repositório remoto e manter a configuração de rastreamento do branch remoto. Você pode então executar a atualização git remote no clone e isso vai substituir todas as referências do repositório original. Com isso, você obtém uma funcionalidade "espelhada" exata.

Outras opções de configuração

Para uma lista abrangente de outras opções do git clone , visite a documentação oficial do Git. Neste documento, vamos mencionar algumas outras opções comuns.

git clone --template

git clone --template=<template_directory> <repo location>

Clona o repositório em <repo location> e aplica o modelo do <template directory> para o branch criado ha pouco. Uma referência extensa em modelos do Git pode ser encontrada em página do git init.
 

URLs do Git

O Git tem sua própria sintaxe de URL, que é usada para passar locais de repositório remoto para os comandos do Git. Como o git clone é mais usado com frequência em repositórios remotos, vamos examinar a sintaxe de URL do Git aqui.
 

Protocolos de URL do Git

-SSH

O Secure Shell (SSH) é um protocolo de rede autenticado onipresente que em geral é configurado por padrão na maioria dos servidores. Como o SSH é um protocolo autenticado, você vai precisar estabelecer credenciais com o servidor de hospedagem antes de conectar. ssh://[user@]host.xz[:port]/path/to/repo.git/
 

- GIT
 

Um protocolo exclusivo para o Git. O Git vem com um daemon que roda na porta (9418). O protocolo é semelhante ao SSH, porém NÃO TEM AUTENTICAÇÃO. git://host.xz[:port]/path/to/repo.git/
 

- HTTP
 

Protocolo de Transferência de Hipertexto. O protocolo da web, usado com mais frequência para transferir dados HTML de páginas da web pela Internet. O Git pode ser configurado para se comunicar via HTTP http[s]://host.xz[:port]/path/to/repo.git/
 

Resumo

Neste documento, demos uma olhada aprofundada no git clone. Os aprendizados mais importantes são:

1. O git clone é usado para criar uma cópia do repositório alvo

2. O repositório alvo pode ser local ou remoto

3. O Git oferece suporte a alguns protocolos de rede para se conectar com repositórios remotos

4. Existem diversas opções de configuração diferentes disponíveis que alteram o conteúdo do clone
 

Para referência mais aprofundada sobre a funcionalidade do git clone, consulte a documentação oficial do Git. Exemplos práticos do git clone também são abordados no guia configuração do repositório.

 

Pronto para aprender sobre o Git?

Experimente este tutorial interativo.

Comece agora mesmo