Use estes exercícios para transformar os conceitos estudados em prática.
Regra sugerida: tente resolver sozinho primeiro. Se travar, volte à aula relacionada. Consulte as soluções comentadas somente depois de formular sua própria tentativa.
Para cada desafio, tente registrar mentalmente:
estado inicial
↓
comando escolhido
↓
estado resultante
Isso ajuda a aprender Git como um sistema de estados, em vez de decorar sequências.
Objetivo: praticar init → status → add → commit → log.
- Crie uma pasta e inicialize um repositório Git.
- Crie um
README.md. - Consulte o estado com
git status. - Adicione o README à staging area.
- Antes do commit, consulte o que está staged.
- Faça um commit com uma mensagem clara.
- Consulte o histórico com
git log --oneline.
- o que significa
untracked; - o que muda depois de
git add; - por que
commitnão é a mesma coisa quepush.
Objetivo: entender isolamento de trabalho e integração.
- Crie
feat/profilea partir damain. - Altere o README.
- Faça um commit na feature.
- Visualize o histórico com
git log --oneline --graph --all. - Volte para
main. - Integre a feature com
git merge. - Exclua a branch depois do merge.
- onde o commit da feature existia antes do merge;
- por que a
mainnão mudou enquanto você trabalhava na feature; - o que o merge fez com o histórico.
Objetivo: praticar o caminho local → remoto → revisão.
- Publique um repositório no GitHub.
- Crie uma branch local.
- Faça uma alteração e um commit.
- Execute
git push -u origin <branch>. - Abra um Pull Request.
- Leia a descrição do PR como se fosse outra pessoa do time.
- Revise a aba Files changed antes de fazer merge.
- Faça uma segunda alteração na mesma branch, commit e push, observando o PR ser atualizado.
push ≠ Pull Request ≠ merge
Objetivo: perder o medo de conflitos.
- Crie duas branches a partir do mesmo ponto.
- Altere a mesma linha de um arquivo de maneiras diferentes.
- Faça commits separados.
- Integre a primeira branch.
- Tente integrar a segunda.
- Leia os marcadores de conflito.
- Use
git statuspara descobrir o que ainda precisa de atenção. - Resolva manualmente.
- Finalize o merge.
- Visualize o histórico com
--graph.
- por que o Git interrompeu o merge;
- o significado de
<<<<<<<,=======e>>>>>>>; - por que resolver conflito é uma decisão sobre o conteúdo, não apenas executar outro comando.
Objetivo: aprender a corrigir erros sem usar comandos destrutivos no impulso.
Pratique em um repositório descartável:
git restore;git restore --staged;git revert;git stashegit stash pop.
Para cada comando, anote:
O que existia antes?
O que o comando alterou?
O trabalho continua recuperável?
O histórico foi reescrito?
Faça experimentos destrutivos apenas em repositórios de treino. Errar de propósito em ambiente controlado é uma ótima forma de entender o Git.
Depois de tentar os desafios, compare sua abordagem com as soluções comentadas.
As soluções explicam o raciocínio por trás dos comandos e mostram que nem sempre existe uma única sequência correta.
Se você concluiu os cinco desafios, avance para o Projeto final — Do zero ao fluxo de equipe.
Ele reúne em uma única prática:
Fork
↓
Clone
↓
Issue
↓
Branch
↓
Commits
↓
Ahead / Behind
↓
Conflito
↓
Pull Request
↓
Review
↓
Merge
↓
Revert
O projeto final foi pensado para verificar se você consegue usar os conceitos em conjunto, como aconteceria em um fluxo real de desenvolvimento.