Reescrevendo a História

GitBeginner
Pratique Agora

Introdução

Bem-vindo, explorador do Git e viajante do tempo! Você recebeu uma missão importante: limpar o histórico de commits bagunçado de um projeto ultrassecreto. Seu objetivo é usar seus novos poderes de 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á mensagens de commit para contar uma história mais clara do desenvolvimento do seu projeto.

Você está pronto para mergulhar no fluxo temporal e emergir com um histórico de Git impecável? Vamos começar sua aventura temporal!

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ê deverá ver os seguintes 4 commits (os hashes dos seus commits 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. Combinar 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. Alterar o texto do commit "Add project codename" para "Add project codename: Chronos".
  3. Manter o commit mais recente ("Add project description") como está.

Requisitos

Para completar esta missão com sucesso, siga estes 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 dos arquivos deve permanecer inalterado - você está modificando apenas 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 manipular commits em seu histórico. O formato básico do comando é:

    git rebase -i <commit>

    onde <commit> é o commit anterior ao primeiro que você deseja modificar. Para modificar desde o primeiríssimo commit, você pode usar:

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

    • pick - usa o commit como está
    • reword ou r - usa o commit, mas altera sua mensagem
    • squash or s - combina este commit com o anterior
    • fixup or f - como o squash, mas descarta 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. Após configurar seu plano de rebase, salve e feche o editor. O Git o guiará pelo restante do processo, abrindo novas janelas de editor conforme necessário para editar as mensagens de commit.

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

    git rebase --abort

    e começar de novo.

Exemplo

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

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 através do histórico 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 alterações, você transformou uma sequência bagunçada 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 a gestão do projeto.

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 se comunique com sua equipe antes de modificar um histórico compartilhado.

À medida que continua suas aventuras no Git, continue aprimorando essas habilidades. A capacidade de manipular o histórico não serve apenas para organizar as coisas — trata-se de construir uma história clara da evolução do seu projeto. Que seus futuros históricos de Git sejam limpos, seus merges livres de conflitos e seus commits sempre significativos!