- Configurações Iniciais
- Ajuda e Documentação
- Inicializando Repositórios
- Trabalhando com Commits
- Histórico e Logs
- Gerenciamento de Arquivos
- Desfazendo Alterações
- Boas Práticas
# Linux (Debian/Ubuntu e derivados)
sudo apt install git
# Verificar instalação
git --version# Definir nome de usuário (obrigatório)
git config --global user.name "Seu Nome"
# Definir email (obrigatório)
git config --global user.email "[email protected]"
# Essas configurações identificam você nos commits# VS Code como editor padrão
git config --global core.editor "code -w"
# Alternativas:
# Nano
git config --global core.editor "nano"
# Vim
git config --global core.editor "vim"# Ativar cores no terminal (recomendado)
git config --global color.ui true# Listar todas as configurações
git config --list
# Ver configuração específica
git config user.name
git config user.email
# Ver onde cada configuração está definida
git config --list --show-origin# Manual completo do Git
man git
# Ajuda geral
git help
# Ajuda de comando específico (abre no navegador)
git help <comando>
# Exemplos:
git help clone
git help commit
git help branch
# Ajuda rápida no terminal
git <comando> -h
# Exemplo: git commit -h# Dentro da pasta do projeto
git init
# Verificar se o repositório foi criado
ls -la # Deve mostrar a pasta .git
⚠️ ATENÇÃO: Todo o histórico e configurações ficam na pasta.git. Apagar esta pasta resultará na perda completa do histórico do projeto.
# Clonar repositório remoto
git clone https://github.com/usuario/repositorio.git
# Clonar com nome personalizado
git clone https://github.com/usuario/repositorio.git novo-nome- Working Directory: Arquivos modificados mas não preparados
- Staging Area: Arquivos preparados para commit
- Repository: Arquivos commitados (salvos no histórico)
# Ver status atual dos arquivos
git status
# Versão resumida
git status -s# Adicionar todos os arquivos modificados
git add .
# Adicionar arquivo específico
git add nome-do-arquivo.txt
# Adicionar por extensão
git add *.js
git add *.php
git add *.html
# Adicionar pasta específica
git add pasta/
# Adicionar interativamente
git add -i# Remover arquivo específico do staging
git restore --staged nome-do-arquivo.txt
# Remover todos os arquivos do staging
git restore --staged .
# Comando antigo (ainda funciona)
git reset HEAD nome-do-arquivo.txt# Commit com mensagem
git commit -m "Descrição clara e objetiva das alterações"
# Commit com título e descrição
git commit -m "Título do commit" -m "Descrição detalhada"
# Adicionar e commitar em um comando (apenas arquivos já rastreados)
git commit -am "Mensagem do commit"
# Abrir editor para mensagem longa
git commit# Adicionar arquivos esquecidos ao último commit
git add arquivo-esquecido.txt
git commit --amend --no-edit
# Alterar mensagem do último commit
git commit --amend -m "Nova mensagem"💡 Dica: Use
--amendapenas para commits que ainda não foram enviados para repositório remoto.
# Histórico completo
git log
# Histórico resumido (uma linha por commit)
git log --oneline
# Últimos N commits
git log -n 5
# Histórico com gráfico
git log --oneline --graph --all
# Histórico de um arquivo específico
git log nome-do-arquivo.txt
# Histórico com diferenças
git log -p
# Estatísticas dos commits
git log --stat# Buscar por palavra-chave na mensagem
git log --grep="palavra-chave"
# Buscar por autor
git log --author="Nome do Autor"
# Commits de um período
git log --since="2024-01-01" --until="2024-12-31"
# Commits das últimas 2 semanas
git log --since="2 weeks ago"# Diferenças não preparadas (working directory vs staging)
git diff
# Diferenças preparadas (staging vs último commit)
git diff --staged
# Diferenças entre commits
git diff hash1 hash2
# Diferenças de arquivo específico
git diff nome-do-arquivo.txt
# Estatísticas das diferenças
git diff --stat# Criar arquivo .gitignore
touch .gitignore
# Adicionar ao repositório
git add .gitignore
git commit -m "Adiciona .gitignore"Exemplo de .gitignore:
# Dependências
node_modules/
vendor/
# Arquivos de ambiente
.env
.env.local
# Logs
*.log
logs/
# Sistema operacional
.DS_Store
Thumbs.db
# IDEs
.vscode/
.idea/
*.swp
# Build
dist/
build/
*.exe# Renomear arquivo (Git rastreia a mudança)
git mv arquivo-antigo.txt arquivo-novo.txt
# Equivalente manual (não recomendado)
mv arquivo-antigo.txt arquivo-novo.txt
git add arquivo-novo.txt
git rm arquivo-antigo.txt# Mover arquivo para pasta
git mv arquivo.txt pasta/arquivo.txt
# Mover e renomear
git mv arquivo.txt nova-pasta/novo-nome.txt# Remover arquivo do repositório e do disco
git rm arquivo.txt
# Remover apenas do repositório (mantém no disco)
git rm --cached arquivo.txt
# Remover pasta recursivamente
git rm -r pasta/
# Forçar remoção
git rm -f arquivo.txt# Restaurar arquivo específico (desfaz mudanças não commitadas)
git restore nome-do-arquivo.txt
# Restaurar todos os arquivos
git restore .
# Comando antigo (ainda funciona)
git checkout -- nome-do-arquivo.txt# Desfazer último commit mantendo alterações no staging
git reset --soft HEAD~1
# Desfazer último commit mantendo alterações no working directory
git reset --mixed HEAD~1
# ou simplesmente
git reset HEAD~1
# Desfazer último commit descartando todas as alterações
git reset --hard HEAD~1
# Voltar para commit específico
git reset --hard hash-do-commit
⚠️ CUIDADO:git reset --harddescarta permanentemente as alterações.
# Reverter último commit (cria novo commit)
git revert HEAD
# Reverter commit específico
git revert hash-do-commit
# Reverter múltiplos commits
git revert HEAD~3..HEAD
# Reverter sem criar commit automaticamente
git revert -n hash-do-commit💡 Dica: Use
revertquando o commit já foi enviado para repositório remoto. Useresetpara commits locais.
# Recuperar arquivo de commit específico
git checkout hash-do-commit -- nome-do-arquivo.txt
# Recuperar do commit anterior
git checkout HEAD~1 -- nome-do-arquivo.txt
# Comando moderno
git restore --source=hash-do-commit nome-do-arquivo.txt# Ver quais arquivos seriam removidos (dry-run)
git clean -n
# Remover arquivos não rastreados
git clean -f
# Remover arquivos e diretórios
git clean -fd
# Incluir arquivos ignorados
git clean -fdx# ✅ Boas mensagens
git commit -m "Adiciona validação de email no formulário"
git commit -m "Corrige bug de autenticação no login"
git commit -m "Atualiza dependências do projeto"
# ❌ Mensagens ruins
git commit -m "ajustes"
git commit -m "fix"
git commit -m "atualizações"Formato recomendado:
- Use verbos no imperativo: "Adiciona", "Corrige", "Remove"
- Seja específico e descritivo
- Primeira linha com até 50 caracteres
- Deixe linha em branco antes da descrição detalhada
- Descrição detalhada com até 72 caracteres por linha
- Faça commits pequenos e frequentes
- Cada commit deve representar uma mudança lógica
- Não misture funcionalidades diferentes no mesmo commit
# Sempre revise antes de commitar
git status
git diff
git diff --staged
# Certifique-se de estar no branch correto
git branch- Crie
.gitignorelogo no início do projeto - Nunca commite arquivos sensíveis (senhas, tokens, chaves)
- Não commite arquivos gerados automaticamente
# Adicionar repositório remoto
git remote add origin https://github.com/usuario/repositorio.git
# Enviar commits para remoto
git push -u origin main
# Verificar remotos configurados
git remote -v# Ver aliases configurados
git config --get-regexp alias
# Criar alias útil
git config --global alias.st status
git config --global alias.co checkout
git config --global alias.br branch
git config --global alias.ci commit
git config --global alias.unstage 'reset HEAD --'
# Ver quem modificou cada linha de um arquivo
git blame nome-do-arquivo.txt
# Buscar texto no histórico
git log -S "texto-procurado"
# Listar branches
git branch -a
# Ver tamanho do repositório
git count-objects -vH- Documentação Oficial: https://git-scm.com/doc
- Git Book (Português): https://git-scm.com/book/pt-br
- Visualizador de Comandos: https://git-school.github.io/visualizing-git/
- Cheat Sheet: https://training.github.com/downloads/pt_BR/github-git-cheat-sheet/
Versão: 2.0
Última Atualização: 29 Dezembro 2025