Trabajar con cuenta personal y corporativa en la misma maquina no deberia ser una loteria. Con una estrategia simple de hosts SSH, se vuelve predecible.
Caso practico guiado
Problema: push accidental al repo corporativo con identidad personal (o viceversa), commits mal firmados y PR bloqueado por policy.
Objetivo: separar identidad, clave y remote por contexto.
Configuracion base
En ~/.ssh/config:
Host github-personal
HostName github.com
User git
IdentityFile ~/.ssh/id_ed25519_personal
Host github-work
HostName github.com
User git
IdentityFile ~/.ssh/id_ed25519_work
Y en remotes:
git remote set-url origin git@github-work:org/repo.git
Reglas por repositorio
En cada repo define identidad explicita:
git config user.name "Francisco Gonzalez"
git config user.email "[email protected]"
No dependas del --global para entornos mixtos.
Verificacion en TypeScript (pre-push)
Puedes usar un script en hook para validar dominio de email antes de push:
import { execSync } from "node:child_process";
const email = execSync("git config user.email").toString().trim();
const remote = execSync("git remote get-url origin").toString().trim();
const isWorkRepo = remote.includes("org/");
if (isWorkRepo && !email.endsWith("@company.com")) {
throw new Error(`Email ${email} no permitido para remote ${remote}`);
}
console.log("Identity check OK");
Buenas practicas
- usar commit signing por contexto,
- validar identidad antes de push,
- documentar flujo para el equipo.
- automatizar chequeos de identidad en hooks.
Relacionado:
Happy reading! ☕
Comments