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.

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 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 the repository located at <repo> into the folder called ~<directory>! on the local machine.

Clonar uma tag específica

git clone --branch <tag> <repo>

Clone the repository located at <repo> and only clone the ref for <tag>.

Clone superficial

git clone -depth=1 <repo>

Clone the repository located at <repo> and only clone the
history of commits specified by the option depth=1. In this example a clone of <repo> is made and only the most recent commit is included in the new cloned Repo. Shallow cloning is most useful when working with repos that have an extensive commit history. An extensive commit history may cause scaling problems such as disk space usage limits and long wait times when cloning. A Shallow clone can help alleviate these scaling issues.

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 a tag em vez da ramificação, para obter o mesmo efeito.

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

Este exemplo acima clonaria apenas a ramificação new_feature do repositório do Git remoto. É 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. 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>

Clones the repo at <repo location> and applies the template from <template directory> to the newly created local branch. A thorough refrence on Git templates can be found on our git init page.

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.

Pronto(a) para aprender Git?

Tente este tutorial interativo.

Comece agora mesmo