Gestionar remotos
| Comando | Qué hace |
|---|---|
git remote -v |
Lista los remotos con sus URLs |
git remote add origin <url> |
Conecta el repo local con un remoto llamado origin |
git remote set-url origin <url> |
Cambia la URL de un remoto |
git remote remove origin |
Desconecta el remoto |
origin es solo el nombre por convención del remoto principal.
Sincronizar
| Comando | Qué hace |
|---|---|
git fetch |
Descarga los cambios del remoto sin tocar las ramas locales |
git pull |
fetch y además integra los cambios en la rama actual |
git pull --rebase |
Igual, pero reaplicando los commits propios encima |
git push |
Sube los commits de la rama actual |
git push -u origin main |
Sube y enlaza la rama local con la remota. Solo hace falta la primera vez |
git push origin --delete feature |
Borra una rama en el remoto |
Después de fetch, las ramas remotas se ven como origin/main. Compararlas antes de integrar evita sorpresas:
git fetch
git log --oneline main..origin/main # commits que tiene el remoto y faltan en local
git diff main origin/main
Subir un repo local por primera vez
git remote add origin git@github.com:usuario/repo.git
git push -u origin main
Cuando el push es rechazado
Ocurre si el remoto tiene commits que no están en local. Se traen primero y luego se sube:
git pull --rebase
git push
git push --forcesobrescribe el historial del remoto y puede borrar commits de otras personas. Si de verdad hace falta tras un rebase en una rama propia, la opción segura esgit push --force-with-lease, que falla si alguien más subió algo entre tanto.
Autenticación por SSH
Con SSH no se escribe usuario ni token en cada operación.
ssh-keygen -t ed25519 -C "tu@correo.com" # genera el par de llaves
cat ~/.ssh/id_ed25519.pub # la llave pública, la que se copia
- Copiar el contenido de
id_ed25519.pub. - En GitHub: Settings → SSH and GPG keys → New SSH key, y pegarla.
- Comprobar la conexión:
ssh -T git@github.com
La llave privada (~/.ssh/id_ed25519, sin .pub) nunca se comparte y debe tener permisos 600. El detalle está en la guía de permisos.
Para no escribir la passphrase en cada operación:
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_ed25519
HTTPS o SSH
| URL | Autenticación | |
|---|---|---|
| HTTPS | https://github.com/usuario/repo.git |
Token de acceso personal |
| SSH | git@github.com:usuario/repo.git |
Llave SSH |