Configuração do Git
Configure o Git para um fluxo de trabalho produtivo - identidade, aliases, padrões e padrões .gitignore para projetos Next.js.
Busque em todas as páginas da documentação
Configure o Git para um fluxo de trabalho produtivo - identidade, aliases, padrões e padrões .gitignore para projetos Next.js.
🤖 Read the SystemsArchitect.io Blog for over 100+ cloud architecture articles 🔥
Cartão de receita de referência rápida - pronto para copiar e colar.
# Set identity
git config --global user.name "Your Name"
git config --global user.email "you@example.com"
# Set default branch name
git config --global init.defaultBranch main
# Use rebase on pull by default
git config pull.rebase true
# Enable rerere (reuse recorded resolution)
git config --global rerere.enabled true
# Set VS Code as editor
git config --global core.editor "code --wait"
# View all config
git config --list --show-originQuando usar isso: Ao configurar uma nova máquina, integrar-se a um projeto ou otimizar operações repetitivas do Git.
.gitignore recomendado para Next.js# Dependências
node_modules/
.pnp/
.pnp.js
# Saída de build
.next/
out/
build/
dist/
# Arquivos de ambiente
.env
.env.local
.env.development.local
.env.test.local
.env.production.local
# IDE
.vscode/settings.json
.idea/
*.swp
*.swo
.DS_Store
# Debug
npm-debug.log*
yarn-debug.log*
yarn-error.log*
# TypeScript
*.tsbuildinfo
next-env.d.ts
# Vercel
.vercel
# Testes
coverage/
playwright-report/
test-results/
# Diversos
*.pem
.turboO que isso demonstra:
.env são sempre ignorados - segredos nunca devem ser commitadosnext-env.d.ts é gerado automaticamente e deve ser ignorado# Short status
git config --global alias.s "status -sb"
# Pretty log
git config --global alias.lg "log --oneline --graph --all --decorate"
# Undo last commit (keep changes staged)
git config --global alias.undo "reset --soft HEAD~1"
# Show what you did today
git config --global alias.today "log --since='midnight' --oneline --author='Your Name'"
# List aliases
git config --global alias.aliases "config --get-regexp ^alias"
# Amend without editing message
git config --global alias.amend "commit --amend --no-edit"
# Quick diff of staged changes
git config --global alias.staged "diff --cached"Uso após a configuração:
git s # short status
git lg # pretty log graph
git undo # undo last commit
git today # today's commits
git amend # amend last commit silently
git staged # diff of staged changes# Global (applies to all repos) - stored in ~/.gitconfig
git config --global user.name "Your Name"
# Local (applies to this repo only) - stored in .git/config
git config user.email "work@company.com"
# System (applies to all users) - rarely used
git config --system core.autocrlf true
# Check where a config value comes from
git config --show-origin user.email# Auto-correct typos (runs after 1 second)
git config --global help.autocorrect 10
# Colorize output
git config --global color.ui auto
# Set default merge strategy
git config --global merge.conflictstyle diff3
# Sign commits with GPG
git config --global commit.gpgsign true
git config --global user.signingkey YOUR_GPG_KEY_ID
# Cache credentials for 1 hour
git config --global credential.helper 'cache --timeout=3600'
# macOS keychain
git config --global credential.helper osxkeychain# Generate a new SSH key
ssh-keygen -t ed25519 -C "you@example.com"
# Start the SSH agent
eval "$(ssh-agent -s)"
# Add key to agent
ssh-add ~/.ssh/id_ed25519
# Copy public key to clipboard (macOS)
pbcopy < ~/.ssh/id_ed25519.pub
# Then add to GitHub: Settings > SSH and GPG keys > New SSH key
# Test the connection
ssh -T git@github.com
# "Hi username! You've successfully authenticated"Hooks do Git executam scripts automaticamente em pontos chave do fluxo de trabalho do Git.
# Common hooks (in .git/hooks/ or managed by Husky)
pre-commit # Runs before each commit - lint, format, type-check
commit-msg # Validate commit message format
pre-push # Runs before push - run tests
post-merge # Runs after merge - reinstall dependenciesCom Husky (recomendado para projetos em equipe):
npx husky init
# Add a pre-commit hook
echo "npx lint-staged" > .husky/pre-commitCoisas que vão te pegar. Cada armadilha inclui o que dá errado, por que acontece e a correção.
Email errado em commits - Usar um email pessoal em um repositório de trabalho (ou vice-versa). Correção: Definir configuração local por repositório: git config user.email "trabalho@empresa.com".
.gitignore não funciona em arquivos rastreados - Adicionar um arquivo ao .gitignore depois que ele já foi commitado não para de rastreá-lo. Correção: git rm --cached .env para parar de rastreá-lo, depois fazer commit.
Problemas de final de linha (CRLF/LF) - Windows e macOS/Linux usam finais de linha diferentes, causando diffs barulhentos. Correção: Adicionar um arquivo .gitattributes: * text=auto e *.tsx text eol=lf.
Hooks não executando - Hooks do Git precisam de permissões de execução. Correção: chmod +x .husky/pre-commit. Com Husky v9+, certifique-se de que o diretório .husky/ esteja configurado corretamente.
Outras maneiras de resolver o mesmo problema - e quando cada uma é a melhor opção.
| Alternativa | Usar Quando | Não Usar Quando |
|---|---|---|
.gitattributes | Forçar finais de linha e comportamento de diff por tipo de arquivo | Projetos simples de plataforma única |
| Husky + lint-staged | Projetos em equipe que precisam de verificações consistentes de pre-commit | Projetos solo onde você confia em sua própria disciplina |
direnv | Configuração de ambiente por diretório além do Git | Necessidades de configuração apenas do Git |
--global aplica-se a todos os repositórios para o usuário atual (~/.gitconfig)--system aplica-se a todos os usuários na máquina (raramente usado)git config --show-origin user.email.gitignore apenas impede que arquivos não rastreados sejam preparadosgit rm --cached .env
git commit -m "chore: untrack .env"git config --global alias.s "status -sb"
git config --global alias.lg "log --oneline --graph --all"
git config --global alias.undo "reset --soft HEAD~1"git s, git lg, git undo como atalhosgit pull execute rebase automaticamente em vez de mergegit config --global pull.rebase truegit config user.email "work@company.com"--global)ssh-keygen -t ed25519 -C "voce@exemplo.com"ssh-add ~/.ssh/id_ed25519ssh -T git@github.comrerere significa "reuse recorded resolution" (reutilizar resolução gravada)git config --global rerere.enabled truenpx husky init
echo "npx lint-staged" > .husky/pre-commitlint-staged em package.json para executar verificações apenas em arquivos preparadoschmod +x .husky/pre-commit.husky/ está inicializado corretamenteprepare existe em package.json: "prepare": "husky"node_modules/, .next/, out/, dist/, build/ (dependências e saída de build).env, .env.local, .env.*.local (segredos)*.tsbuildinfo, next-env.d.ts (arquivos TypeScript gerados automaticamente)coverage/, playwright-report/ (saída de teste).gitattributes na raiz do repositório:* text=auto
*.tsx text eol=lf
*.ts text eol=lf
Revisado por Chris St. John·Última atualização: 19 de jul. de 2026
🤖 Read the SystemsArchitect.io Blog for over 100+ cloud architecture articles 🔥