Git Reset - Exercício Prático

1 min

Índice

  1. Setup do exercício
  2. Exercício 1: Reset Soft
  3. Exercício 2: Reset Mixed
  4. Exercício 3: Reset Hard
  5. Verificação

1. Setup do exercício

bash
mkdir exercice-reset && cd exercice-reset
git init

# Criar vários commits para testar
echo "print('v1')" > app.py && git add . && git commit -m "Version 1"
echo "print('v2')" > app.py && git add . && git commit -m "Version 2"
echo "print('v3')" > app.py && git add . && git commit -m "Version 3"
echo "print('v4')" > app.py && git add . && git commit -m "Version 4"

git log --oneline    # Anotar os hashes

Voltar ao índice

2. Exercício 1: Reset Soft

Objetivo: recuar 2 commits, guardar as alterações staged.

bash
git reset --soft HEAD~2

# Verificações
git status           # Alterações na staging area?
cat app.py          # Que conteúdo?
git log --oneline   # Quantos commits?

Resultado esperado:

  • Ficheiro: contém v4
  • Status: alterações staged para commit
  • Log: 2 commits (v1, v2)

Voltar ao índice

3. Exercício 2: Reset Mixed

Repor a zero e depois testar mixed:

bash
git commit -m "Re-commit v4"    # Voltar a pôr v4
git reset --mixed HEAD~1        # Recuar 1 commit (modo por omissão)

# Verificações
git status           # Alterações não staged?
cat app.py          # Que conteúdo?
git log --oneline   # Quantos commits?

Resultado esperado:

  • Ficheiro: contém v4
  • Status: alterações não staged
  • Log: 3 commits (v1, v2, v3)

Voltar ao índice

4. Exercício 3: Reset Hard

ATENÇÃO: Reset hard = destrutivo!

bash
git add .                    # Stager as alterações
git commit -m "Re-commit v4" # Voltar a pôr v4
git reset --hard HEAD~2      # Apagar TUDO, recuar 2 commits

# Verificações
git status           # Working directory limpo?
cat app.py          # Que conteúdo?
git log --oneline   # Quantos commits?

Resultado esperado:

  • Ficheiro: contém v2
  • Status: nothing to commit
  • Log: 2 commits (v1, v2)

Voltar ao índice

5. Verificação

Resumo dos 3 modos:

ModoCommitsStagingWorking Directory
--softRecuaGuardaGuarda
--mixedRecuaApagaGuarda
--hardRecuaApagaApaga

Compreendeu os 3 modos? Perfeito! O Reset já não tem segredos.

Voltar ao índice