Operações Básicas de Ramificação no Git

GitBeginner
Pratique Agora

Introdução

Bem-vindo de volta, viajante do tempo! Agora, vamos elevar suas habilidades de viagem temporal para o próximo nível com os ramos (branches) do Git!

Imagine se você pudesse criar universos alternativos para o seu projeto, onde pudesse experimentar ideias malucas sem bagunçar sua linha do tempo principal. É exatamente isso que os ramos do Git permitem que você faça! Eles são como dimensões paralelas para o seu código, onde você pode desenvolver novos recursos, corrigir bugs ou testar experimentos ousados sem medo.

Ao final deste laboratório, você será um mestre do multiverso, capaz de criar novas realidades (ramos), saltar entre elas (checkout ou switch), combiná-las (merge) e até mesmo deletar universos que não são mais necessários. Esses superpoderes são essenciais para qualquer desenvolvedor viajante do tempo, esteja você trabalhando sozinho ou como parte de uma equipe de programadores que saltam entre dimensões.

Você está pronto para se tornar um mago dos ramos do Git? Vamos mergulhar nisso!

Este é um Laboratório Guiado, que fornece instruções passo a passo para ajudá-lo a aprender e praticar. Siga as instruções cuidadosamente para concluir cada etapa e ganhar experiência prática. Dados históricos mostram que este é um laboratório de nível iniciante com uma taxa de conclusão de 94%. Ele recebeu uma taxa de avaliação positiva de 100% dos alunos.

Configurando seu Hub Multiversal

Primeiro, precisamos criar um hub central para todas as nossas realidades alternativas. Este será o nosso repositório Git principal.

  1. Abra seu terminal. Este é o seu painel de controle para saltar entre dimensões.

  2. Navegue até o seu espaço de projeto:

cd ~/project

Este comando altera seu diretório atual para a pasta "project" em seu diretório home. Se você não tiver certeza de onde está, pode usar o comando pwd para exibir seu diretório de trabalho atual. Este é um truque útil para lembrar caso se perca no terminal.

  1. Vamos criar uma nova pasta para nossos experimentos multiversais:
mkdir git-branch-lab
cd git-branch-lab

O comando mkdir cria um novo diretório e, em seguida, usamos cd para entrar nele. Isso nos dá uma folha em branco para trabalhar. Pense nesta nova pasta como a sala de controle da nossa operação de viagem no tempo.

  1. Agora, vamos inicializar nosso hub (repositório Git):
git init

Este comando cria um novo repositório Git no diretório atual. Ele configura todos os arquivos necessários que o Git precisa para começar a rastrear seu projeto. Esses arquivos ficam escondidos em uma pasta chamada .git.

Você deverá ver uma mensagem como:

Initialized empty Git repository in /home/labex/project/git-branch-lab/.git/

Parabéns! Você acaba de criar um hub para infinitas possibilidades! Esta é a base sobre a qual todas as suas aventuras de viagem no tempo serão construídas.

  1. Vamos criar uma nota para nossos "eus" do futuro explicando o que é este lugar:
echo "## Git Branch Lab" > README.md
echo "This is my hub for multiversal Git branch experiments" >> README.md

Aqui está o que esses comandos fazem:

  • O primeiro comando cria um novo arquivo chamado README.md e escreve "## Git Branch Lab" nele. No Markdown, o símbolo '#' cria um título. Este arquivo funcionará como o manual do usuário para o nosso hub do multiverso.
  • O segundo comando anexa outra linha ao README.md. O '>>' significa "adicione isso ao final do arquivo". Estamos adicionando alguns detalhes ao nosso manual do usuário.

Se você estiver curioso sobre o que acabou de criar, pode usar o comando cat README.md para visualizar o conteúdo do arquivo. Este comando é como ler o manual do usuário do nosso hub multiversal.

  1. Agora, vamos criar nosso primeiro ponto de salvamento (commit) neste novo universo:
git add README.md
git commit -m "Initial commit: Create the multiverse hub"

Vamos detalhar isso:

  • git add README.md diz ao Git para começar a rastrear as alterações no README.md. Isso prepara o arquivo para o commit (fase de staging). Pense no staging como a preparação do arquivo para a viagem.
  • git commit cria um novo commit (ponto de salvamento) com as alterações preparadas. Isso é como tirar uma foto instantânea do nosso universo atual.
  • A flag -m permite que você forneça uma mensagem de commit diretamente. Tente sempre escrever mensagens de commit claras e descritivas! Esta mensagem é como uma nota explicando o que mudamos nesta foto instantânea.

Se você não tiver certeza do que foi preparado ou commitado, pode usar git status para verificar. Isso é como checar o status do nosso equipamento de viagem no tempo.

Criando sua Primeira Realidade Alternativa

Agora que temos nosso universo principal (ramo master) configurado, vamos criar nossa primeira realidade alternativa!

  1. Crie um novo ramo chamado feature-dimension:
git branch feature-dimension

Este comando cria um novo ramo, mas ainda não alterna para ele. Pense nisso como criar um novo universo paralelo, mas você ainda está no original. É como ter a planta de uma nova realidade, mas você ainda não entrou nela.

Você acabou de criar uma nova linha do tempo, mas não está nela ainda. Vamos ver todas as linhas do tempo que temos:

git branch

Você deverá ver:

  feature-dimension
* master

O * mostra em qual realidade você está atualmente. No momento, você ainda está no universo principal (master). O ramo master é o ramo padrão que o Git cria quando você inicializa um novo repositório.

Dicas: Pressione q para sair da lista de ramos e retornar ao seu terminal.

  1. Vamos saltar para nossa nova realidade:
git checkout feature-dimension

Este comando faz duas coisas:

  1. Ele altera seu diretório de trabalho atual para o ramo feature-dimension.
  2. Ele atualiza os arquivos no seu diretório de trabalho para corresponder ao estado do ramo feature-dimension. É como atravessar um portal para a nova realidade.

Agora, se você executar git branch novamente, verá:

* feature-dimension
  master

O * se moveu, mostrando que você saltou com sucesso para sua nova dimensão! Você agora está trabalhando nesta realidade alternativa.

Como alternativa, você pode usar git switch feature-dimension para obter o mesmo resultado. O git switch é um comando mais novo introduzido no Git 2.23, projetado especificamente para a alternância de ramos, tornando-o mais claro e intuitivo. Ambos os comandos alcançam o mesmo resultado, mas o git switch é geralmente preferido por sua clareza.

Não se preocupe se você ainda não vir nenhuma mudança em seus arquivos. Quando você cria um novo ramo, ele começa como uma cópia exata do ramo em que você estava. A parte emocionante vem quando começamos a fazer mudanças! Essas cópias iniciais garantem que cada realidade comece com a mesma base.

Dica de mestre: Em versões mais recentes do Git, você pode criar um novo ramo e saltar para ele em um único comando: git checkout -b feature-dimension ou git switch -c feature-dimension. É como criar e atravessar um portal em um único movimento rápido! Usar -b com git checkout ou -c com git switch combina a criação e a alternância de ramos em um único passo.

Se você se perder e não conseguir lembrar em qual dimensão (ramo) está, basta executar git branch novamente. O ramo com o * é a sua localização atual. É como verificar sua localização em um mapa do multiverso.

Moldando sua Nova Realidade

Agora que estamos em nossa nova dimensão, vamos fazer algumas mudanças que existem apenas aqui. Lembre-se, o que quer que façamos aqui não afetará nosso universo principal até que decidamos mesclá-los. Isso nos permite experimentar com segurança sem interromper nossa linha do tempo principal.

  1. Vamos criar um novo artefato nesta realidade:
echo "This is a powerful artifact from another dimension" > dimensional-artifact.txt

Este comando cria um novo arquivo chamado dimensional-artifact.txt e escreve uma mensagem nele. O símbolo > é usado para criar um novo arquivo (ou sobrescrever um existente) com o conteúdo fornecido. Este artefato é único para nossa realidade atual.

  1. Agora, vamos preservar este artefato em nossa linha do tempo:
git add dimensional-artifact.txt
git commit -m "Create a powerful interdimensional artifact"

Estes comandos devem ser familiares da Etapa 1. Estamos dizendo ao Git para rastrear nosso novo arquivo e, em seguida, criando um ponto de salvamento com uma mensagem descritiva. Esses comandos são como tirar uma foto instantânea do artefato recém-descoberto.

  1. Vamos também atualizar nossa nota para os "eus" do futuro sobre esta nova realidade:
echo "##### Feature Dimension" >> README.md
echo "We've discovered a powerful artifact in this reality" >> README.md

Estes comandos estão adicionando novas linhas ao nosso arquivo README.md. O símbolo >> anexa a um arquivo existente em vez de sobrescrevê-lo. Estamos atualizando nosso manual do usuário para refletir nossas descobertas na nova dimensão.

  1. Vamos salvar essas alterações também:
git add README.md
git commit -m "Document the discovery of the artifact"

Novamente, estamos criando outro ponto de salvamento, desta vez para o nosso arquivo README.md atualizado. Estamos preservando a documentação atualizada para nossos "eus" futuros.

Ótimo trabalho! Você agora fez alterações em sua realidade alternativa. Essas alterações existem apenas no ramo feature-dimension por enquanto. Se você voltasse para o ramo master, não veria essas alterações lá. Essa separação garante que nossa experimentação em uma realidade não impacte as outras.

Para ver a diferença entre seu ramo atual e o ramo master, você pode usar o comando git diff master. Isso mostrará todas as alterações que você fez em sua realidade atual em comparação com a linha do tempo principal. Isso é como comparar o estado dos dois universos.

Mesclando Realidades

Agora que fizemos descobertas incríveis em nossa realidade alternativa, é hora de trazê-las de volta para o nosso universo principal. Esse processo é chamado de mesclagem (merging).

  1. Primeiro, vamos saltar de volta para nossa realidade principal:
git checkout master

ou

git switch master

Ambos os comandos nos levam de volta ao ramo master.

  • git checkout é o comando mais antigo para alternar ramos. Ele existe desde os primórdios do Git e ainda é suportado.
  • git switch é o comando mais novo introduzido no Git 2.23. Ele foi projetado para ser mais intuitivo e fácil de entender.

Você pode usar qualquer um dos comandos para alternar ramos, mas o git switch é geralmente preferido por sua clareza.

Se você olhar seus arquivos agora, notará que seu artefato interdimensional desapareceu! Não se preocupe, ele está seguro na outra dimensão. Isso demonstra que as alterações em um ramo ficam isoladas de outros ramos até que sejam mescladas.

  1. Agora, vamos mesclar nossa realidade alternativa na linha do tempo principal:
git merge feature-dimension

Este comando diz ao Git para pegar todas as alterações de feature-dimension e aplicá-las ao master. É como integrar as descobertas de nossa realidade alternativa em nosso universo principal.

Você deverá ver uma mensagem como:

Updating <hash1>..<hash2>
Fast-forward
 README.md              | 2 ++
 dimensional-artifact.txt | 1 +
 2 files changed, 3 insertions(+)
 create mode 100644 dimensional-artifact.txt

Esta saída informa quais arquivos foram alterados e quantas linhas foram adicionadas ou removidas. "Fast-forward" significa que o Git foi capaz de simplesmente mover o ramo master para onde o feature-dimension estava, porque não houve alterações conflitantes. Uma mesclagem fast-forward é o tipo mais simples de mesclagem e ocorre quando o ramo no qual você está mesclando não mudou desde que o ramo de origem foi criado.

Parabéns! Você acabou de combinar duas realidades! As alterações que fizemos em feature-dimension agora fazem parte do nosso universo principal. Nosso artefato interdimensional e a documentação atualizada estão agora presentes em nosso ramo master.

  1. Vamos confirmar que nosso artefato sobreviveu à mesclagem:
cat dimensional-artifact.txt
cat README.md

Estes comandos exibirão o conteúdo dos arquivos. Você deverá ver as alterações que fizemos no feature-dimension. Esses comandos verificam se a mesclagem foi bem-sucedida.

Você trouxe com sucesso suas descobertas de uma realidade alternativa para a linha do tempo principal. É assim que os desenvolvedores trazem novos recursos para seu projeto principal! Este é um conceito central no Git que permite aos desenvolvedores trabalhar em recursos isoladamente e depois integrá-los à base de código principal quando estiverem prontos.

Se você quiser ver uma lista de todos os ramos que foram mesclados no seu ramo atual, pode usar o comando git branch --merged. Isso pode ser útil para rastrear quais ramos já foram integrados.

Fechando Portais Dimensionais

Agora que trouxemos com sucesso nossas descobertas de volta para a realidade principal, podemos fechar o portal para nossa dimensão alternativa. Em termos de Git, excluiremos o ramo que não precisamos mais.

  1. Vamos fechar nosso portal feature-dimension:
git branch -d feature-dimension

A flag -d diz ao Git para excluir o ramo, mas apenas se ele tiver sido totalmente mesclado. É uma medida de segurança para evitar a perda acidental de alterações não mescladas. O Git só permitirá que você exclua um ramo usando -d se as alterações nele tiverem sido mescladas no ramo em que você está.

Se você tentar excluir um ramo que não foi totalmente mesclado, o Git emitirá um aviso. Nesses casos, se você tiver certeza absoluta de que deseja excluir o ramo, poderá usar a flag -D em vez disso: git branch -D feature-dimension. Isso força a exclusão do ramo, independentemente do seu status de mesclagem. Tenha cuidado com esse poder! Este comando só deve ser usado quando você tiver certeza absoluta de que não precisa das alterações no ramo.

  1. Vamos verificar quais realidades ainda existem:
git branch

Você deve ver apenas o ramo master agora. Isso indica que o portal para a feature-dimension está agora fechado.

Limpar ramos antigos mantém seu multiverso organizado. É um bom hábito fechar portais para dimensões que você não precisa mais, especialmente ao trabalhar em projetos maiores com muitas realidades alternativas. Isso mantém seu espaço de trabalho limpo e evita confusão.

Se você quiser ver todos os ramos, incluindo ramos remotos, pode usar git branch -a. Isso pode ser útil ao trabalhar em projetos com vários colaboradores. Ramos remotos são cópias de ramos em outros repositórios.

Resumo

Parabéns, mestre do multiverso! Você acaba de completar seu curso intensivo de magia com ramos do Git. Vamos recapitular os feitos incríveis que você realizou:

  1. Você criou um hub para infinitas possibilidades (um novo repositório Git).
  2. Você abriu um portal para uma realidade alternativa (criou um novo ramo).
  3. Você aprendeu a saltar entre diferentes dimensões (alternar ramos usando git checkout ou git switch).
  4. Você fez descobertas revolucionárias em um universo paralelo (commitou alterações em um ramo separado).
  5. Você mesclou duas realidades, trazendo suas descobertas para a linha do tempo principal (mesclou ramos).
  6. Finalmente, você aprendeu como fechar portais dimensionais que não são mais necessários (excluir ramos).

Essas habilidades multiversais são cruciais para qualquer desenvolvedor viajante do tempo. Ao usar ramos, você pode:

  • Trabalhar em diferentes recursos ou correções de bugs em universos paralelos, sem interromper a linha do tempo principal.
  • Experimentar ideias malucas em realidades alternativas seguras.
  • Colaborar com outros desenvolvedores que saltam entre dimensões, cada um trabalhando em sua própria realidade.
  • Manter sua linha do tempo principal estável e livre de falhas, mesclando novos recursos apenas quando estiverem prontos.

Bom salto entre dimensões, e que suas mesclagens sejam sempre livres de conflitos!