Reescrevendo a História

GitGitBeginner
Pratique Agora

💡 Este tutorial foi traduzido do inglês com assistência de IA. Para ver o original, você pode mudar para a versão em inglês

Introdução

Bem-vindo, explorador Git viajante no tempo! Você foi encarregado de uma missão importante: limpar o histórico de commits bagunçado de um projeto ultrassecreto. Seu objetivo é usar seus novos poderes Git, especificamente a arte do rebase interativo, para transformar uma linha do tempo caótica em um histórico claro e conciso.

Imagine que você é um historiador com a capacidade de reescrever o passado. Seu trabalho é pegar uma série de eventos dispersos e reorganizá-los em uma narrativa coerente. É exatamente isso que você fará com o recurso de rebase interativo do Git. Você combinará commits relacionados, removerá os desnecessários e reescreverá as mensagens de commit para contar uma história mais clara do desenvolvimento do seu projeto.

Você está pronto para mergulhar na linha do tempo e emergir com um histórico Git refinado? Vamos começar sua aventura temporal!

Este é um desafio, que difere de um Lab guiado em que você precisa completar o desafio de forma independente, em vez de seguir os passos de um Lab para aprender.Desafios geralmente têm um pouco de dificuldade. Se você encontrar isso difícil, pode discutir com Labby ou verificar a solução. Dados históricos mostram que este é um desafio de nível iniciante com uma taxa de aprovação de 94.54%. Recebeu uma taxa de avaliações positivas de 90.91% dos estudantes.

Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL git(("Git")) -.-> git/BasicOperationsGroup(["Basic Operations"]) git(("Git")) -.-> git/BranchManagementGroup(["Branch Management"]) git/BasicOperationsGroup -.-> git/commit("Create Commit") git/BranchManagementGroup -.-> git/log("Show Commits") git/BranchManagementGroup -.-> git/rebase("Reapply Commits") subgraph Lab Skills git/commit -.-> lab-387746{{"Reescrevendo a História"}} git/log -.-> lab-387746{{"Reescrevendo a História"}} git/rebase -.-> lab-387746{{"Reescrevendo a História"}} end

Limpando a Linha do Tempo

Tarefas

O repositório do desafio foi configurado em ~/project/time-travel-git. Execute o seguinte comando para visualizar o histórico inicial de commits:

cd ~/project/time-travel-git
git log --oneline

Você deve ver os seguintes 4 commits (seus hashes de commit serão diferentes):

886c6ad (HEAD -> master) Add project description
3a87b84 Add project codename
6b4cbb9 Fix typo in project name
0d71e5e Start secret project

Sua missão envolve as seguintes tarefas:

  1. Combine os dois commits mais antigos ("Start secret project" e "Fix typo in project name") em um único commit com a mensagem "Initialize secret project".
  2. Reescreva o commit "Add project codename" para "Add project codename: Chronos".
  3. Mantenha o commit mais recente ("Add project description") como está.

Requisitos

Para concluir esta missão com sucesso, siga os seguintes requisitos:

  • Todas as operações devem ser realizadas no diretório ~/project/time-travel-git.
  • Você deve usar o comando git rebase -i (rebase interativo) para limpar o histórico de commits.
  • Seu histórico final deve ter exatamente 3 commits (em vez dos 4 originais).
  • O conteúdo do arquivo deve permanecer inalterado - você está apenas modificando o histórico de commits.
  • Quando o desafio estiver concluído, a execução de git log --oneline deve mostrar 3 commits com as mensagens corretas.

Dicas

Aqui estão algumas dicas úteis para guiá-lo através do desafio:

  1. O rebase interativo permite que você manipule commits em seu histórico. O formato básico do comando é:

    git rebase -i <commit>

    onde <commit> é o commit antes do primeiro que você deseja modificar. Para modificar a partir do primeiro commit, você pode usar:

    git rebase -i --root
  2. Na tela de rebase interativo, você verá uma lista de commits com ações. As ações comuns são:

    • pick - use o commit como está
    • reword ou r - use o commit, mas altere sua mensagem
    • squash ou s - combine este commit com o anterior
    • fixup ou f - como squash, mas descarte a mensagem deste commit
  3. Para combinar commits, você pode usar squash ou fixup no segundo commit.

  4. Para alterar uma mensagem de commit, use a ação reword.

  5. Depois de configurar seu plano de rebase, salve e feche o editor. O Git irá guiá-lo pelo resto do processo, abrindo novas janelas do editor conforme necessário para editar as mensagens de commit.

  6. Se você cometer um erro durante o rebase, você sempre pode abortá-lo com:

    git rebase --abort

    e começar de novo.

Exemplo

Após concluir o desafio, seu git log --oneline deve ser semelhante a este (com diferentes hashes de commit):

abc1234 Add project description
def5678 Add project codename: Chronos
ghi9101 Initialize secret project
✨ Verificar Solução e Praticar

Resumo

Neste desafio, você embarcou em uma jornada de dobra temporal pela história do Git. Você dominou a arte do rebase interativo, uma ferramenta poderosa que permite remodelar o passado e criar um histórico de commits mais limpo e lógico.

Ao combinar commits, reescrever mensagens e reorganizar as alterações, você transformou uma sequência confusa de eventos em uma narrativa coerente. Essa habilidade é inestimável em projetos do mundo real, onde manter um histórico limpo e compreensível pode melhorar muito a colaboração e o gerenciamento de projetos.

Lembre-se, com grandes poderes vêm grandes responsabilidades. Embora reescrever a história possa ser útil para branches locais ou projetos pessoais, deve ser usado com cautela em branches compartilhados. Sempre comunique-se com sua equipe antes de modificar o histórico compartilhado.

À medida que você continua suas aventuras no Git, continue a aprimorar essas habilidades. A capacidade de manipular o histórico não é apenas sobre organização - é sobre criar uma história clara da evolução do seu projeto. Que seus futuros históricos do Git sejam limpos, suas mesclagens livres de conflitos e seus commits sempre significativos!

OSZAR »