O commit é uma das operações mais importantes no Git. Ele salva um snapshot do seu projeto na Staging Area para o Git Repository.
Cada commit deve ter uma mensagem significativa que explique o que foi alterado.
Antes de criar um commit, você precisa adicionar os arquivos à Stage Area:
# Adiciona todos arquivos modificados
git add .
# Cria o commit com mensagem
git commit -m "Mensagem do commit"# Adiciona e commita em um único passo (arquivos modificados)
git commit -a -m "Mensagem do commit"
git commit -am "Mensagem do commit"Se você cometeu algo com mensagem incorreta:
git commit --amend -m "Nova mensagem do commit"Revertendo um commit específico
git revert <hash-do-commit>- Cria um novo commit que desfaz as alterações do commit original.
- O hash do commit pode ser encontrado com:
git log --oneline - Abortando revert:
git revert --abort
Para apagar commits locais (cuidado!):
git reset --hard <hash-do-commit>- Retorna o repositório para o estado do commit indicado.
- Alterações não commitadas serão perdidas.
Quando você precisa trocar de branch sem commitar mudanças:
# Guarda alterações temporariamente
git stash
# Visualiza stash
git stash list
# Aplica o último stash sem remover
git stash apply
# Aplica e remove o último stash
git stash pop
# Remove um stash específico
git stash drop stash@{0}
# Limpa todo o stash
git stash clear# Alterações na Working Directory (não adicionadas à Stage)
git diff
# Alterações na Stage Area (prontas para commit)
git diff --staged
# Alterações de um arquivo específico
git diff nome-arquivo.extensao
# Somente nomes dos arquivos alterados
git diff --name-only
# Ignora diferenças de espaços em branco
git diff -w
# Visualizar alterações de um commit específico
git show <hash-do-commit>
# Ver alterações entre dois commits
git diff <hash-commit1> <hash-commit2>
# Arquivos em conflito
git diff --name-only --diff-filter=U
flowchart TD
WD[Working Directory] -->|git add| SA[Staging Area]
SA -->|git commit| GR[Git Repository]
GR -->|git push| Remote[Servidor Remoto]
- Mensagens de commit devem ser curtas, claras e explicativas.
- Use imperativo: “Adiciona README”, “Corrige bug X”.
- Commitar frequentemente ajuda no controle e colaboração.
- Utilize stash para guardar alterações temporárias e evitar perda de trabalho.
- Commits semânticos: siga padrões como feat, fix, docs, refactor, chore.
Exemplos:
- feat(login): adiciona autenticação via Google
- fix(button): corrige bug ao clicar duas vezes
- docs(readme): atualiza instruções de instalação
| Comando | Risco / Atenção |
|---|---|
git commit --amend |
Reescreve o último commit. Não use em commits já enviados ao remoto. |
git reset --hard <hash> |
Remove commits posteriores ao hash e alterações não commitadas. Cuidado: perda de dados. |
git stash clear |
Apaga todos os itens armazenados no stash. |
git revert <hash> |
Seguro, pois cria um commit que desfaz alterações do commit original. |
git diff / git show |
Seguro, apenas visualiza alterações. |
Dica: Sempre verifique o status e as diferenças antes de resetar ou alterar o histórico:
git status
git diff- git add → adiciona arquivos à Stage Area.
- git commit -m → salva alterações no repositório.
- git commit -a -m → adiciona e commita em um passo.
- git revert → desfaz alterações de um commit criando novo commit.
- git reset --hard → apaga commits locais.
- git stash → guarda alterações temporariamente.
- git diff / git show → visualiza alterações.