git clone
Aqui, vamos examinar o comando git clone
em detalhes. 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 de destino. 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 clone
vai 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 por meio 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 fazer o check out de código do repositório SVN. Ao contrário do SVN, o Git não faz distinção entre as cópias ativas e o repositório central. São todos repositórios Git totalmente desenvolvidos.
É uma diferença fundamental entre a colaboração com o Git e a colaboração com o SVN. Enquanto o SVN depende do relacionamento 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 confirmar uma cópia ativa no repositório central do SVN, você faz push ou pull de commits de um repositório a outro.
Material relacionado
Git Branch
VER SOLUÇÃO
Aprenda a usar o Git com o Bitbucket Cloud
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 importante é entender que esse processo é 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. É parecido com o checkout 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. Essa conexão 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 da ramificação remota 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 de 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, você pode usar o cd no projeto e começar a editar os arquivos, fazer o commit de capturas de tela e interagir com outros repositórios. Observe também que a extensão .git
é omitida do repositório clonado. Assim, o estado diferente de vazio da cópia local é refletido.
Clonar para uma pasta específica
git clone <repo> <directory>
Clone o repositório localizado em <repo>
na pasta chamada ~<directory>!
na máquina local.
Clonar uma tag específica
git clone --branch <tag> <repo>
Clone o repositório localizado em <repo>
e apenas clone a ref para <tag>
.
Clone superficial
git clone -depth=1 <repo>
Clona o repositório localizado em <repo>
e clona apenas 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. Um clone superficial pode ajudar a aliviar esses itens em escala.
Opções de configuração
git clone -branch
O argumento -branch
permite que você especifique uma ramificação específica para clonar, em vez da ramificação que o HEAD
remoto está apontando, em geral, o branch principal. Além disso, você pode passar o marcador em vez da ramificação para ter o mesmo efeito.
git clone --branch
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. Ou seja: um repositório vai ser configurado com um histórico do projeto que pode receber push e pull, mas não pode ser editado direto. Outro aspecto relevante é que nenhuma ramificação remota para o repositório vai ser configurada com o repositório -bare
. Assim como o git init --bare
, ele é usado para criar um repositório hospedado que os desenvolvedores não vão editar direto.
git clone --mirror
A transmissão do argumento --mirror
também é a transmissão implícita do argumento --bare
. Quer dizer que o comportamento de --bare
é herdado por --mirror
. O resultado é um repositório vazio sem arquivos de trabalho editáveis. Além do mais, --mirror
vai clonar todas as referências estendidas do repositório remoto e manter a configuração de rastreamento da ramificação remota. Você pode então executar a atualização git remote
no espelho, o que vai substituir todas as referências do repositório original. Assim 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 template de <template directory>
na ramificação local recém-criada. Uma referência extensa sobre templates do Git pode ser encontrada na 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 em repositórios remotos, a gente vai 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, a gente vai analisar o git clone
em detalhes. Os pontos principais e mais importantes são:
1. git clone
é usado para criar uma cópia de um repositório de destino
2. O repositório de destino pode ser local ou remoto
3. O Git é compatível com diversos protocolos de rede para conexão com os repositórios remotos
4. Há muitas 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 de configuração do repositório.
Compartilhar este artigo
Próximo tópico
Leitura recomendada
Marque esses recursos para aprender sobre os tipos de equipes de DevOps ou para obter atualizações contínuas sobre DevOps na Atlassian.