Configuración de Git
Configura Git para un flujo de trabajo productivo - identidad, aliases, valores predeterminados y patrones .gitignore para proyectos Next.js.
Busca en todas las páginas de la documentación
Configura Git para un flujo de trabajo productivo - identidad, aliases, valores predeterminados y patrones .gitignore para proyectos Next.js.
🤖 Read the SystemsArchitect.io Blog for over 100+ cloud architecture articles 🔥
Tarjeta de referencia rápida - lista para copiar y pegar.
# Establecer identidad
git config --global user.name "Your Name"
git config --global user.email "you@example.com"
# Establecer nombre de rama predeterminado
git config --global init.defaultBranch main
# Usar rebase en pull por defecto
git config pull.rebase true
# Habilitar rerere (reutilizar resolución grabada)
git config --global rerere.enabled true
# Establecer VS Code como editor
git config --global core.editor "code --wait"
# Ver toda la configuración
git config --list --show-originCuándo usarlo: Cuando configures una máquina nueva, te incorpores a un proyecto o optimices operaciones repetitivas de Git.
.gitignore recomendado para Next.js# Dependencias
node_modules/
.pnp/
.pnp.js
# Salida de compilación
.next/
out/
build/
dist/
# Archivos de entorno
.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
# Testing
coverage/
playwright-report/
test-results/
# Misc
*.pem
.turboLo que esto demuestra:
.env siempre se ignoran - los secretos nunca deben comprometersenext-env.d.ts se genera automáticamente y debe ignorarse# Estado corto
git config --global alias.s "status -sb"
# Log bonito
git config --global alias.lg "log --oneline --graph --all --decorate"
# Deshacer último commit (mantener cambios staged)
git config --global alias.undo "reset --soft HEAD~1"
# Mostrar lo que hiciste hoy
git config --global alias.today "log --since='midnight' --oneline --author='Your Name'"
# Listar aliases
git config --global alias.aliases "config --get-regexp ^alias"
# Enmendar sin editar mensaje
git config --global alias.amend "commit --amend --no-edit"
# Diff rápido de cambios staged
git config --global alias.staged "diff --cached"Uso después de la configuración:
git s # estado corto
git lg # gráfico de log bonito
git undo # deshacer último commit
git today # commits de hoy
git amend # enmendar último commit silenciosamente
git staged # diff de cambios staged# Global (aplica a todos los repos) - almacenado en ~/.gitconfig
git config --global user.name "Your Name"
# Local (aplica solo a este repo) - almacenado en .git/config
git config user.email "work@company.com"
# Sistema (aplica a todos los usuarios) - raramente usado
git config --system core.autocrlf true
# Verificar de dónde viene un valor de configuración
git config --show-origin user.email# Autocorrección de typos (se ejecuta después de 1 segundo)
git config --global help.autocorrect 10
# Colorizar salida
git config --global color.ui auto
# Establecer estrategia de merge predeterminada
git config --global merge.conflictstyle diff3
# Firmar commits con GPG
git config --global commit.gpgsign true
git config --global user.signingkey YOUR_GPG_KEY_ID
# Cachear credenciales por 1 hora
git config --global credential.helper 'cache --timeout=3600'
# Llavero de macOS
git config --global credential.helper osxkeychain# Generar una nueva clave SSH
ssh-keygen -t ed25519 -C "you@example.com"
# Iniciar el agente SSH
eval "$(ssh-agent -s)"
# Agregar clave al agente
ssh-add ~/.ssh/id_ed25519
# Copiar clave pública al portapapeles (macOS)
pbcopy < ~/.ssh/id_ed25519.pub
# Luego agregar a GitHub: Settings > SSH and GPG keys > New SSH key
# Probar la conexión
ssh -T git@github.com
# "Hi username! You've successfully authenticated"Los hooks de Git ejecutan scripts automáticamente en puntos clave del flujo de trabajo de Git.
# Hooks comunes (en .git/hooks/ o gestionados por Husky)
pre-commit # Se ejecuta antes de cada commit - lint, formato, verificación de tipos
commit-msg # Validar formato del mensaje de commit
pre-push # Se ejecuta antes del push - ejecutar pruebas
post-merge # Se ejecuta después de merge - reinstalar dependenciasCon Husky (recomendado para proyectos de equipo):
npx husky init
# Agregar un hook pre-commit
echo "npx lint-staged" > .husky/pre-commitCosas que te atrapará. Cada gotcha incluye qué sale mal, por qué sucede y la solución.
Email incorrecto en commits - Usar un email personal en un repo de trabajo (o viceversa). Solución: Establecer configuración local por repo: git config user.email "work@company.com".
.gitignore no funciona en archivos rastreados - Agregar un archivo a .gitignore después de que ya se ha comprometido no detiene su rastreo. Solución: git rm --cached .env para destraquear, luego commit.
Problemas de terminaciones de línea (CRLF/LF) - Windows y macOS/Linux usan diferentes terminaciones de línea, causando diffs ruidosos. Solución: Agregar un archivo .gitattributes: * text=auto y *.tsx text eol=lf.
Hooks no se ejecutan - Los hooks de Git necesitan permisos de ejecución. Solución: chmod +x .husky/pre-commit. Con Husky v9+, asegúrate de que el directorio .husky/ esté configurado correctamente.
Otras formas de resolver el mismo problema - y cuándo es mejor cada una.
| Alternativa | Úsalo cuando | No lo uses cuando |
|---|---|---|
.gitattributes | Aplicar terminaciones de línea y comportamiento de diff por tipo de archivo | Proyectos simples en una sola plataforma |
| Husky + lint-staged | Proyectos de equipo que necesitan verificaciones pre-commit consistentes | Proyectos individuales en los que confías en tu propia disciplina |
direnv | Configuración de entorno por directorio más allá de Git | Necesidades de configuración solo de Git |
--global aplica a todos los repos del usuario actual (~/.gitconfig)--system aplica a todos los usuarios en la máquina (raramente usado)git config --show-origin user.email.gitignore solo previene que archivos sin rastrear se stagedgit 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 atajosgit pull automáticamente rebase en lugar de mergegit config --global pull.rebase truegit config user.email "work@company.com"--global)ssh-keygen -t ed25519 -C "you@example.com"ssh-add ~/.ssh/id_ed25519ssh -T git@github.comrerere significa "reuse recorded resolution"git config --global rerere.enabled truenpx husky init
echo "npx lint-staged" > .husky/pre-commitlint-staged en package.json para ejecutar verificaciones solo en archivos stagedchmod +x .husky/pre-commit.husky/ esté debidamente inicializadoprepare exista en package.json: "prepare": "husky"node_modules/, .next/, out/, dist/, build/ (dependencias y salida de compilación).env, .env.local, .env.*.local (secretos)*.tsbuildinfo, next-env.d.ts (archivos TypeScript auto-generados)coverage/, playwright-report/ (salida de pruebas).gitattributes en la raíz del repo:* text=auto
*.tsx text eol=lf
*.ts text eol=lf
Revisado por Chris St. John·Última actualización: 19 jul 2026
🤖 Read the SystemsArchitect.io Blog for over 100+ cloud architecture articles 🔥