Course
Imagine que você está escrevendo um livro e quer experimentar novas ideias sem estragar o original. Você pode começar um novo caderno para cada ideia, mantendo os rascunhos separados.
O Git, um sistema de controle de versão, permite que os desenvolvedores de software façam o mesmo com o código por meio de "ramificações". Cada ramificação é como um caminho separado de desenvolvimento, permitindo que você explore as alterações sem afetar a base de código principal.
Neste artigo, orientarei você sobre o uso do git clone
, com foco na clonagem de ramificações específicas. Se você quiser saber mais sobre o Git, recomendo este curso de Introdução ao Git.
Vamos começar com uma resposta curta para aqueles de vocês que estão com pressa. Depois disso, vamos nos aprofundar em mais detalhes.
Resposta curta: Como clonar um ramo específico
Para clonar um ramo específico de um repositório git, use o comando:
git clone --single-branch --branch <branch_name> <repository_url>
Substitua pelo nome da ramificação desejada e
pelo URL do repositório. Esse comando cria uma cópia local do ramo especificado, permitindo o desenvolvimento imediato e focado nesse ramo.
Exemplo
Ao longo deste artigo, usaremos este repositório. Você pode usá-lo para experimentar os comandos que aprendeu em sua máquina. O repositório contém três ramificações:
main
: A ramificação padrão com dois arquivos de texto.add-new-file
: Uma ramificação em que um terceiro arquivo foi adicionado.modify-file
: Uma ramificação em que o segundo arquivo foi modificado.
É assim que podemos clonar a ramificação add-new-file:
git clone --single-branch --branch add-new-file https://github.com/fran-aubry/git-clone-example.git
O que é git clone
?
Por padrão, o git clone
foi projetado para copiar todo o repositório em um novo diretório em seu computador local, clonando todas as ramificações. Aqui está a sintaxe:
git clone <repository_url>
Para clonar o repositório de exemplo, você pode fazer o seguinte:
git clone https://github.com/fran-aubry/git-clone-example.git
Depois de executar esse comando, todas as ramificações serão copiadas para seu computador local. No entanto, somente os arquivos de uma ramificação ficam visíveis por vez, chamada de check-out branch. Após a clonagem de um repositório, o branch padrão (geralmente chamado de main
ou master
) é o que recebe check-out.
Mudança de ramos
Depois de um clone completo, podemos mudar (fazer checkout) para o ramo desejado usando o comandogit checkout. Por exemplo, para fazer o checkout do ramo modify-file, você deve fazer o seguinte:
git checkout modify-file
Profundidade de clonagem
Ao trabalhar com o git, as alterações em uma ramificação são salvas quando você as confirma usando o comando git commit
. Cada confirmação cria um novo estado desse ramo, para o qual você pode reverter posteriormente, se necessário. Pense em cada commit como a criação de um snapshot, com o git mantendo o controle de todos esses snapshots. Você pode reverter um branch para qualquer um desses snapshots a qualquer momento.
O comando git clone
, quando usado sem opções, baixa todos os commits de todas as ramificações para o computador local. Dependendo do tamanho do projeto, isso pode ocupar uma quantidade significativa de espaço em seu armazenamento local. Se você sabe que não precisará de todo o histórico, poderá usar o parâmetro --depth
para especificar quantos commits (ou snapshots) deseja clonar .
Para clonar o ramo principal e carregar apenas o commit mais recente, use o seguinte comando:
git clone --depth=1 https://github.com/fran-aubry/git-clone-example.git
Clonagem de um ramo específico
Aprendemos a clonar um repositório usando o git clone. Por padrão, esse comando clona tudo em seu computador local. Muitas vezes, você pode estar interessado apenas em trabalhar em um ramo específico, portanto, seria mais eficiente clonar apenas esse ramo específico. Essa abordagem economiza espaço em disco e permite que você comece a trabalhar imediatamente, sem a necessidade de trocar de ramificação após a clonagem.
Na analogia com a escrita de livros, considere a possibilidade de você ser designado para trabalhar na reescrita do segundo capítulo de um livro. Nesse caso, você deve clonar apenas a ramificação em que essa tarefa está sendo executada, pois não é necessário ter acesso a ramificações relacionadas à revisão de outros capítulos.
Você pode instruir o git a clonar um único ramo adicionando os argumentos --single-branch
e --branch
seguidos do nome do ramo:
git clone --single-branch --branch <branch_name> <repository_url>
Vamos detalhar o comando:
git clone
: Esse é o comando básico do git usado para copiar um repositório de uma fonte remota para o computador local.
--single-branch
: Essa opção diz ao Git para clonar apenas um único ramo. Se nenhuma ramificação for especificada, a ramificação padrão será clonada.
--branch
: Essa opção especifica o ramo a ser clonado. O <branch_name> é o nome do ramo que você deseja clonar.: Este é o URL do repositório.
Por exemplo, para clonar apenas o arquivo modify-file do nosso repositório, podemos fazer o seguinte:
git clone --single-branch --branch add-new-file https://github.com/fran-aubry/git-clone-example.git
Como trabalhar com uma ramificação clonada
Ao trabalhar em uma filial, há três operações essenciais que você precisa fazer:
- Salvar seu trabalho atual criando um instantâneo do estado atual.
- Fazer upload de suas alterações para que todos tenham acesso a elas.
- Baixar as alterações de outras pessoas e mesclá-las com as suas.
Salvando suas alterações com git commit
No Git, salvar seu trabalho é chamado de criar um commit. Esse processo tira um instantâneo do estado atual do ramo em que você está trabalhando.
O estado da ramificação é salvo em seu computador local após cada confirmação, permitindo que você navegue entre os vários estágios de progresso.
Para confirmar suas alterações no git, você usa o comando git commit
. No entanto, antes de fazer o commit das alterações, o git precisa saber quais arquivos você deseja incluir no commit. Você especifica os arquivos a serem salvos usando o comando git add
. A sintaxe desse comando é a seguinte:
git add <path_to_file>
Na sintaxe, é o caminho para o arquivo que você deseja confirmar. Por exemplo, se estivermos no ramo
modify-file
do nosso repositório de exemplo e tivermos adicionado um parágrafo a file2.txt
, você adicionaria esse arquivo executando:
git add file2.txt
Depois de adicionar todos os arquivos que deseja incluir em seu commit, você pode prosseguir com o commit executando:
git commit -m <message>
Aqui, o argumento deve ser uma mensagem concisa entre aspas duplas, descrevendo brevemente as alterações. Por exemplo:
git commit -m "Add paragraph"
Aqui estão algumas convenções para a mensagem de confirmação. Elas são essenciais para garantir clareza e compreensão entre todos os que trabalham no projeto:
- Use o modo imperativo: Inicie sua mensagem de confirmação com um verbo na forma imperativa (por exemplo, "Adicionar", "Corrigir", "Atualizar"). Por exemplo, em vez de "Adicionado novo recurso", escreva "Adicionar novo recurso".
- Seja conciso, mas descritivo: Procure enviar uma mensagem breve, de preferência com menos de 50 caracteres. No entanto, priorize a clareza ao descrever as mudanças. Em vez de "Mudou as coisas", escreva "Atualizou o estilo da barra de navegação".
- Evite mensagens genéricas: Evite mensagens vagas como "Corrigir bugs" ou "Fazer melhorias". Em vez disso, seja específico: "Corrigir erro na validação do formulário de login" ou "Melhorar a legibilidade da documentação".
Carregando suas alterações com git push
Ao fazer o commit, você cria um instantâneo das alterações em seu computador local. Para que outras pessoas possam acessar suas alterações, você precisa carregá-las. Para fazer isso, você usa o comando push
.
A sintaxe básica do comando push no Git é:
git push <remote> <branch>
Vamos detalhar isso:
: Esse é o nome do repositório remoto para o qual você deseja enviar suas alterações. Por padrão, quando você clona um repositório, o repositório remoto é chamado de origin.
: Esse é o nome do branch cujas alterações você deseja enviar para o repositório remoto. Se você ignorar esse argumento, o Git fará push das alterações com base no ramo atual e nas configurações de rastreamento remoto.
Aqui estão alguns casos de uso comuns para git push
:
- Enviar alterações do ramo atual:
git push
- Enviar as alterações de uma ramificação específica:
git push origin
Baixando alterações com git pull
O Git permite que grandes equipes trabalhem simultaneamente no mesmo projeto. Quando colegas editam o mesmo ramo em que você está trabalhando, seu ramo local pode ficar desatualizado em comparação com o ramo remoto.
Para baixar os commits de outras pessoas, usamos o comando git pull
. A sintaxe básica do comando push no git é:
git pull <remote> <branch>
Veja a seguir o que cada parâmetro faz:
: Este é o nome do repositório remoto do qual você deseja extrair. Por padrão, esse repositório é denominado origin.
: Esse é o nome do ramo do qual você deseja extrair as alterações. Se não for especificado, o git usará o ramo atual junto com o ramo upstream.
Aqui estão alguns casos de uso comuns do git pull
:
- Puxando alterações do ramo atual:
git pull
- Puxar as alterações de uma ramificação específica:
git pull origin
Fluxo de trabalho Commit-pull-push
Ao usar o Git, recomendo que você obtenha atualizações com frequência para garantir que sua ramificação local permaneça atualizada. Aconselho que você siga as práticas recomendadas a seguir:
- Antes de começar a trabalhar, obtenha as atualizações mais recentes da ramificação atual para garantir que você esteja trabalhando na versão mais recente.
- Faça commits com frequência, garantindo que cada commit se concentre em alterações pequenas e logicamente relacionadas.
- Depois de fazer algumas alterações e criar um commit, faça pull novamente para atualizar seu branch, caso outra pessoa tenha feito atualizações simultaneamente.
- Por fim, envie suas alterações para o repositório remoto.
Conflitos do Git
Ao executar o comandogit pull para fazer download das alterações de um repositório remoto, é possível que você se depare com um cenário em que outro commit tenha modificado as mesmas linhas que os commits locais. O Git tenta mesclar automaticamente as alterações e, em muitos casos, é bem-sucedido. Por exemplo, se forem feitas alterações em diferentes partes do mesmo arquivo, o Git poderá mesclá-las perfeitamente, pois os commits afetam seções distintas.
No entanto, se você e outro colaborador tiverem editado o mesmo parágrafo, o git não conseguirá determinar qual versão manter, resultando em um conflito de mesclagem. Nessa situação, você precisará resolver o conflito manualmente, decidindo quais alterações devem ser mantidas.
Para obter mais orientações sobre a resolução de conflitos, recomendo que você leia este artigo sobre como resolver conflitos de mesclagem no Git.
Download do GitHub
Em determinados cenários, você deseja uma cópia local de um repositório para uso sem a intenção de modificá-lo. Se for um repositório público, você não precisará instalar o Git em seu computador local. Você pode baixar diretamente o repositório do GitHub clicando no botão Code seguido do botãoDownload Zip, conforme mostrado abaixo:
Conclusão
A clonagem do Git permite que você copie um repositório Git para o seu computador local, possibilitando que você utilize o código ou o expanda adicionando novas funcionalidades. Ao clonar um repositório, todas as ramificações são baixadas, o que pode consumir uma quantidade significativa de espaço em disco.
As ramificações são utilizadas para trabalhar em alterações ou recursos específicos. A clonagem de uma ramificação específica permite que você contribua com essas alterações sem fazer download de trabalhos não relacionados, exigindo assim muito menos espaço em disco e mantendo o disco local mais limpo.
Se você quiser saber mais sobre o assunto, recomendo este Tutorial do GitHub e do Git para iniciantes.
Aprenda Git com estes cursos!
Course
Conceitos do GitHub
Track