Starter kit profesional para configurar Git en Windows 11/10 con múltiples cuentas (GitHub personal + GitLab laboral) usando claves SSH, hooks automáticos y estandarización segura.
Situación: Vas a empezar a trabajar en un nuevo repositorio
Solución: Usa git-clone-secure
git-clone-secure git@github.com:usuario/repo.git✅ Beneficios:
- Configura automáticamente la identidad correcta según el host
- Instala todos los hooks necesarios
- Crea el archivo .env con configuración básica
- Todo listo para empezar a trabajar de forma segura
Situación: Quieres asegurarte de que siempre commits con la identidad correcta
Solución: Instala pre-commit.bat y post-checkout.bat
install-hooks.bat
# Selecciona opciones 1 y 2✅ Beneficios:
- Verifica la identidad antes de cada commit
- Configura automáticamente la identidad al cambiar de rama
- Previene commits accidentales con identidad incorrecta
Situación: Quieres evitar push directo a ramas protegidas
Solución: Instala pre-push.bat
install-hooks.bat
# Selecciona opción 3✅ Beneficios:
- Protege ramas como main, master y develop
- Previene push directo a ramas protegidas
- Mantiene la integridad del repositorio
Situación: Quieres mantener un formato consistente en los mensajes de commit
Solución: Instala prepare-commit-msg.bat
install-hooks.bat
# Selecciona opción 4✅ Beneficios:
- Formatea automáticamente los mensajes de commit
- Detecta el tipo de cambio según la rama
- Mantiene un historial de commits consistente
graph LR
A[Clonar Repositorio] --> B[post-checkout.bat]
B --> C[git add]
C --> D[prepare-commit-msg.bat]
D --> E[pre-commit.bat]
E --> F[git commit]
F --> G[pre-push.bat]
G --> H[git push]
Cada hook actúa en una etapa específica del ciclo de vida:
-
post-checkout.bat:
- Se ejecuta al cambiar de rama
- Asegura que la identidad sea correcta desde el inicio
- Configura automáticamente el email y nombre de usuario
-
prepare-commit-msg.bat:
- Se ejecuta antes de crear el mensaje de commit
- Estandariza el formato del mensaje
- Añade prefijos según el tipo de cambio
-
pre-commit.bat:
- Se ejecuta justo antes del commit
- Verifica que la identidad sea la correcta
- Previene commits con identidad incorrecta
-
pre-push.bat:
- Se ejecuta antes de hacer push
- Valida las reglas de push
- Protege ramas importantes
Git-Hooks-Multicuenta-Windows/
├── hooks/
│ ├── pre-commit.bat # Hook: valida identidad antes de commit
│ ├── post-checkout.bat # Hook: configura identidad al cambiar rama
│ ├── pre-push.bat # Hook: valida reglas antes de push
│ └── prepare-commit-msg.bat # Hook: estandariza mensajes de commit
├── scripts/
│ ├── install-hooks.bat # Instala hooks de manera selectiva
│ ├── git-clone-secure.bat # Clona repo + configura hooks
│ └── lang.bat # Sistema de mensajes multilingüe
├── config/
│ └── ssh-config-example # Plantilla para ~/.ssh/config
├── .env.example # Plantilla de archivo .env (no sensible)
├── .gitignore # Ignora archivos .env locales
└── README.md # Este documento- Clona este proyecto en tu máquina:
C:\git-tools\Git-Hooks-Multicuenta-Windows - Copia
.env.examplecomo.envy ajusta tus correos y hosts reales. - Configura tu SSH usando
config/ssh-config-examplecomo base. - (Opcional) Agrega
C:\git-tools\Git-Hooks-Multicuenta-Windows\scriptsalPATHde Windows.
# 1. Clonar de forma segura (recomendado)
$ git-clone-secure git@github.com:usuario/proyecto.git
# 2. O clonar normalmente y configurar después
$ git clone git@github.com:usuario/proyecto.git
$ cd proyecto
$ install-hooks.bat
# 3. Trabajar normal
$ git add .
$ git commit -m "Mi commit"
$ git push✅ Los hooks validarán automáticamente:
- Identidad correcta antes de cada commit
- Configuración de identidad al cambiar de rama
- Reglas antes de hacer push
- Formato de mensajes de commit
- Instala hooks de manera selectiva mediante menú interactivo
- Opciones disponibles:
- pre-commit: verifica identidad antes de commit
- post-checkout: configura identidad al cambiar rama
- pre-push: valida reglas antes de push
- prepare-commit-msg: estandariza mensajes de commit
- Todos los hooks
- Detecta automáticamente el idioma del sistema
- Muestra mensajes en español, inglés o chino según la configuración regional
- Clona un repositorio y configura automáticamente:
- Crea archivo .env básico si no existe
- Configura identidad inicial según el host
- Ejecuta el instalador de hooks
- Usa el sistema de mensajes multilingüe
- Detecta el host remoto del proyecto
- Verifica el user.email configurado
- Aborta el commit si la identidad no es la esperada
- Muestra mensajes en el idioma del sistema
- Se ejecuta automáticamente al cambiar de rama
- Configura la identidad correcta según el host
- Configura nombre de usuario si no está definido
- Maneja repositorios sin remoto de forma silenciosa
- Valida reglas antes de hacer push
- Protege ramas específicas (main, master, develop)
- Previene push directo a ramas protegidas
- Muestra mensajes en el idioma del sistema
- Estandariza mensajes de commit
- Detecta tipo de cambio según la rama
- Aplica formato: "tipo: mensaje"
- Tipos soportados: feat, fix, release, chore
- Sistema de mensajes multilingüe (español, inglés, chino)
- Detecta automáticamente el idioma del sistema
- Proporciona mensajes claros y consistentes
- Maneja errores y advertencias de forma robusta
.envcontiene tu configuración sensible (no se sube a GitHub).env.examplemuestra la estructura que debe tener tu.env- Variables soportadas:
EMAIL_GITHUB=tuemail@personal.com EMAIL_GITLAB=tuemail@empresa.com GITLAB_HOST=gitlab.empresa.com
graph TD
A[Clonar Repositorio] --> B{Tiene hooks?}
B -- No --> C[Ejecutar install-hooks.bat]
B -- Sí --> D[OK]
C --> D
D --> E{Identidad correcta?}
E -- No --> F[Configurar identidad]
E -- Sí --> G[git add . -> git commit -m msg]
F --> G
G --> H[git push]
H --> I{Reglas de push?}
I -- No --> J[Push abortado]
I -- Sí --> K[Push exitoso]
- Agrega
C:\git-tools\Git-Hooks-Multicuenta-Windows\scriptsal PATH. - Verifica en terminal:
git-clone-secure
install-hooks- Uso habitual:
# Clonar y configurar todo automáticamente
git-clone-secure git@github.com:usuario/repo.git
# O instalar hooks en proyecto existente
cd mi-proyecto
install-hooks- Mantén tu
.envactualizado si cambian tus correos o host - Usa
git-clone-securepara nuevos repositorios - Usa
install-hookspara proyectos existentes - Los hooks se pueden instalar individualmente según necesidades
- Trabaja siempre vía SSH (no HTTPS) para garantizar el correcto uso de claves
- Los mensajes se mostrarán automáticamente en tu idioma del sistema
- Si necesitas forzar un idioma específico, puedes modificar la variable
LANGenlang.bat
Q: ¿Necesito hacer git init después de clonar con git-clone-secure?
A: No, git-clone-secure inicializa automáticamente el repositorio Git. El comando git init solo es necesario para repositorios nuevos que no han sido clonados.
Q: ¿Por qué usar SSH en lugar de HTTPS?
A: SSH proporciona una autenticación más segura mediante claves criptográficas, elimina la necesidad de introducir credenciales repetidamente y es el método recomendado para entornos profesionales.
Q: ¿Qué sucede si intento hacer commit con una identidad incorrecta?
A: El hook pre-commit verificará automáticamente tu identidad y abortará el commit si no coincide con la configuración esperada para el host del repositorio.
Q: ¿Necesito configurar manualmente mi identidad Git?
A: No, los hooks pre-commit y post-checkout configuran automáticamente tu identidad según el host del repositorio (GitHub o GitLab) basándose en tu archivo .env.
Q: ¿Qué hacer si el instalador de hooks muestra errores de codificación?
A: Asegúrate de que todos los archivos .bat estén guardados en codificación UTF-8 con BOM. El script utiliza chcp 65001 para manejar caracteres especiales.
Q: El instalador muestra "Script:" no se reconoce como comando. ¿Qué hago?
A: Este error indica un problema de codificación del archivo. Asegúrate de que autosetidentity.bat esté guardado con codificación UTF-8 con BOM. Si el error persiste, los hooks se instalarán correctamente y podrás configurar tu identidad manualmente con git config user.email tu@email.com.
Q: ¿Cómo verificar que los hooks están funcionando correctamente?
A: Intenta hacer un commit. Si los hooks están instalados correctamente, verás mensajes de verificación de identidad y, en caso de error, recibirás notificaciones específicas.
Q: ¿Es seguro almacenar mis emails en el archivo .env?
A: Sí, el archivo .env está incluido en .gitignore y no se sube al repositorio. Sin embargo, asegúrate de mantenerlo actualizado si cambian tus correos.
Q: ¿Cómo protege el sistema las ramas principales?
A: El hook pre-push previene automáticamente los push directos a ramas protegidas (main, master, develop), manteniendo la integridad del repositorio.
Este proyecto está bajo la Licencia MIT. Consulta el archivo LICENSE para más detalles.
En resumen: Puedes usar, copiar, modificar, fusionar, publicar, distribuir, sublicenciar y/o vender copias del software libremente, siempre que incluyas el aviso de copyright original.
¡Las contribuciones son bienvenidas! Por favor, lee nuestra Guía de Contribución para conocer el proceso.
- 🐛 Reportar bugs
- 💡 Sugerir nuevas características
- 📝 Mejorar la documentación
- 🔧 Enviar pull requests
- ⭐ Dar una estrella al proyecto
¿Encontraste un problema o tienes una pregunta?
- Revisa la sección de FAQs
- Busca en los Issues existentes
- Crea un nuevo Issue si es necesario
Disfruta de un entorno de desarrollo seguro, automatizado y sin errores de identidad 🚀.