Configuración
En el primer uso, lea setup.md. Por defecto: modo de mejores prácticas (sin configuración necesaria).
Cuándo usarlo
El usuario necesita experiencia en Git, desde operaciones básicas hasta flujos de trabajo complejos. El agente maneja ramificación, fusión, rebase, resolución de conflictos y patrones de colaboración en equipo.
Arquitectura
Memoria en ~/git/. Consulte memory-template.md para la estructura.
~/git/
└── memory.md # Preferencias del usuario (opcional)
Referencia rápida
| Tema | Archivo |
|---|---|
| Comandos esenciales | commands.md |
| Operaciones avanzadas | advanced.md |
| Estrategias de ramas | branching.md |
| Resolución de conflictos | conflicts.md |
| Historial y recuperación | history.md |
| Flujos de trabajo en equipo | collaboration.md |
| Configuración | setup.md |
| Memoria | memory-template.md |
Reglas principales
- Nunca hacer push forzado a ramas compartidas — Use
--force-with-leasesolo en ramas de características - Hacer commits frecuentes — Los commits pequeños son más fáciles de revisar, revertir y hacer bisect
- Escribir mensajes de commit significativos — Primera línea de menos de 72 caracteres, modo imperativo
- Hacer pull antes del push — Siempre
git pull --rebaseantes de hacer push para evitar commits de fusión - Limpiar antes de fusionar — Use
git rebase -ipara squash de commits de corrección
Flujos de trabajo en equipo
Flujo de rama de características:
git checkout -b feature/nombredesde main- Hacer commits, hacer push regularmente
- Abrir PR, obtener revisión
- Squash y fusionar a main
- Eliminar la rama de características
Flujo de hotfix:
git checkout -b hotfix/problemadesde main- Corregir, probar, commit
- Fusionar a main Y develop (si existe)
- Etiquetar el lanzamiento
Sincronización diaria:
git fetch --all --prune
git rebase origin/main # o fusionar si el equipo lo prefiere
Mensajes de commit
- Use el formato de commit convencional:
tipo(ámbito): descripción - Mantenga la primera línea por debajo de 72 caracteres
- Tipos:
feat,fix,docs,style,refactor,test,chore
Seguridad en el push
- Use
git push --force-with-leaseen lugar de--force— evita sobrescribir el trabajo de otros - Si el push es rechazado, ejecute
git pull --rebaseantes de reintentar - Nunca haga push forzado a la rama main/master
Resolución de conflictos
- Después de editar archivos conflictivos, verifique que no queden marcadores:
grep -r "<<<\|>>>\|===" . - Pruebe que el código compile antes de completar la fusión
- Si la fusión se vuelve compleja, cancele con
git merge --aborte intentegit rebaseen su lugar
Higiene de ramas
- Elimine ramas fusionadas localmente:
git branch -d nombre-rama - Limpie el seguimiento remoto:
git fetch --prune - Antes de crear un PR, haga rebase de la rama de características sobre la última main
- Use
git rebase -ipara squash de commits desordenados antes de hacer push
Lista de verificación de seguridad
Antes de operaciones destructivas (reset --hard, rebase, force push):
- ¿Es una rama compartida? → No reescriba el historial
- ¿Tengo cambios sin commit? → Stash o commit primero
- ¿Estoy en la rama correcta? →
git branchpara verificar - ¿Está el remoto actualizado? →
git fetchprimero
Errores comunes
- git user.email incorrecto — Verifique con
git config user.emailantes de commits importantes - Directorios vacíos — Git no los rastrea, añada
.gitkeep - Submódulos — Siempre clone con
--recurse-submodules - HEAD separado — Use
git switch -para volver a la rama anterior - Push rechazado — Normalmente necesita
git pull --rebaseprimero - stash pop con conflicto — El stash desaparece. Use
stash applyen su lugar - Archivos grandes — Use Git LFS para archivos >50MB, nunca suba secretos
- Sensibilidad a mayúsculas — Mac/Windows ignoran mayúsculas, Linux no — causa fallos en CI
Comandos de recuperación
- Deshacer el último commit conservando cambios:
git reset --soft HEAD~1 - Descartar cambios no preparados:
git restore archivo - Encontrar commits perdidos:
git reflog(conserva ~90 días de historial) - Recuperar rama eliminada:
git checkout -b nombre-rama <sha-de-reflog> - Use
git add -ppara preparación parcial cuando un commit mezcla varios cambios
Depuración con bisect
Encuentre el commit que introdujo un error:
git bisect start
git bisect bad # el commit actual está roto
git bisect good v1.0.0 # esta versión funcionaba
# Git revisa el commit del medio, pruébelo, luego:
git bisect good # o git bisect bad
# Repita hasta que Git encuentre el culpable
git bisect reset # vuelva a la rama original
Resumen rápido
git status -sb # estado corto con rama
git log --oneline -5 # últimos 5 commits
git shortlog -sn # contribuyentes por número de commits
git diff --stat HEAD~5 # resumen de cambios últimos 5 commits
git branch -vv # ramas con información de seguimiento
git stash list # stashes pendientes
Habilidades relacionadas
Instale con clawhub install <slug> si el usuario confirma:
gitlab— GitLab CI/CD y solicitudes de fusióndocker— Flujos de trabajo de contenedorescode— Calidad de código y mejores prácticas
Comentarios
- Si es útil:
clawhub star git - Manténgase actualizado:
clawhub sync