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:
- 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".
- Alterar o texto do commit "Add project codename" para "Add project codename: Chronos".
- 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 --onelinedeve mostrar 3 commits com as mensagens corretas.
Dicas
Aqui estão algumas dicas úteis para guiá-lo através do desafio:
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 --rootNa 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árewordour- usa o commit, mas altera sua mensagemsquashors- combina este commit com o anteriorfixuporf- como o squash, mas descarta a mensagem deste commit
Para combinar commits, você pode usar
squashoufixupno segundo commit.Para alterar uma mensagem de commit, use a ação
reword.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.
Se você cometer um erro durante o rebase, sempre pode abortá-lo com:
git rebase --aborte 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
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!



