Exemplo 1. Desfazer Alterações Não Adicionadas à Área de Staging
Passo 1: Criar ou modificar um arquivo
🔹 Linux/macOS
echo "Alteração" > arquivo.txt
🔹 Windows (CMD/PowerShell)
echo Alteração > arquivo.txt
Passo 2: Verificar o estado atual do repositório
Verifique os arquivos modificados que ainda não foram adicionados à área de staging.
git status
Saída esperada:
Modifications not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: arquivo.txt
Passo 3: Desfazer as alterações no arquivo
Para restaurar o arquivo para seu estado original, utilize o comando:
git restore arquivo.txt
Passo 4: Verificar novamente o estado do repositório
Após desfazer as alterações, verifique novamente o estado do repositório.
git status
Saída esperada:
Nothing to commit, working tree clean
Exemplo 2. Remover Arquivos da Área de Staging
Passo 1: Criar ou modificar um arquivo
🔹 Linux/macOS
echo "Alteração" > arquivo.txt
🔹 Windows (CMD/PowerShell)
echo Alteração > arquivo.txt
Passo 2: Adicionar o arquivo à área de staging
Adicione o arquivo à área de staging para prepará-lo para o commit.
git add arquivo.txt
Passo 3: Verificar o estado da área de staging
Verifique os arquivos que foram adicionados à área de staging.
git status
Saída esperada:
Changes to be committed:
(use "git restore --staged <file>..." to unstage)
new file: arquivo.txt
Passo 4: Remover o arquivo da área de staging
Remova o arquivo da área de staging, mas sem apagar o arquivo do seu diretório de trabalho.
git reset HEAD arquivo.txt
Passo 5: Verificar novamente o estado da área de staging
Após remover o arquivo da área de staging, verifique o estado novamente.
git status
Saída esperada:
Modifications not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: arquivo.txt
Desfazendo Commits
Exemplo 3. Reverter um Commit Específico
Passo 1: Criar um repositório de exemplo (se ainda não tiver um)
z9y8x7 Mudança 3 no documento
w6v5u4 Mudança 2 no documento
t3s2r1 Mudança 1 no documento
q0p9o8 Versão inicial do documento
Passo 4: Desfazer os últimos 2 commits, mantendo as alterações
git reset --soft HEAD~2
Agora, as alterações feitas nesses commits ainda estão na área de staging, prontas para serem ajustadas.
Passo 5: Verificar o status do repositório
git status
Saída esperada:
Changes to be committed:
(use "git restore --staged <file>..." to unstage)
modified: documento.txt
Passo 6: Verificar novamente o histórico
git log --oneline
Saída esperada:
t3s2r1 Mudança 1 no documento
q0p9o8 Versão inicial do documento
Agora os commits desfeitos não estarão mais no histórico.
Passo 7: Verificar o conteúdo do arquivo
🔹 Linux/macOS
cat documento.txt
🔹 Windows (CMD/PowerShell)
type documento.txt
Saída esperada:
Versão inicial
Mudança 1
Mudança 2
Mudança 3
A saída mostra que as linhas referentes às mudanças 2 e 3 ainda estão no arquivo, mesmo que os commits tenham sido desfeitos no Passo 4 com git reset --soft HEAD~2. Isso acontece porque o reset foi feito com a opção --soft, que remove os commits, mas mantém as alterações no arquivo e na área de staging.
O gitdiff--staged mostra as mudanças que estão na área de staging, ou seja, prontas para serem commitadas novamente.
A saída mostra que as linhas "Mudança 2" e "Mudança 3" foram adicionadas (+ indica adição). Isso confirma que, apesar de os commits terem sido removidos do histórico, as alterações continuam armazenadas e podem ser reaproveitadas em um novo commit, editadas ou descartadas conforme necessário.
Resumindo, os commits foram apagados, mas as mudanças feitas neles continuam disponíveis para serem reutilizadas.