Capítulo 5: El servidor remoto — git init –bare, tu primer central de código
Hasta ahora todo lo que hiciste está solo en tu máquina. Si se te rompe el disco, perdés todo. Y si trabajás con alguien más, no tenés forma de compartirle nada.
Vas a crear un servidor remoto. No en GitHub. No en GitLab. En tu propia red, en la máquina que haga de servidor.
¿Qué es un bare repo?
Un repositorio "bare" es un repo que no tiene archivos de trabajo. Solo tiene la carpeta `.git/`. No podés editar archivos adentro. Es puro historial, solo commits. Es como una biblioteca: podés consultar, pedir prestado o donar libros, pero no podés escribir en las paredes.
Los repositorios normales (los que usás para trabajar) se llaman "working tree". Los remotos son "bare".
Crear el bare repo en tu servidor
Suponiendo que tenés una máquina en tu red con acceso SSH (podría ser la misma donde tenés Docker, tu NAS, o cualquier otra PC):
ssh usuario@192.168.1.100
Una vez adentro del servidor:
mkdir -p /srv/git/mi-primer-proyecto.git
cd /srv/git/mi-primer-proyecto.git
git init --bare
Git te responde:
Initialized empty Git repository in /srv/git/mi-primer-proyecto.git/
Eso es todo. Tu servidor remoto está listo. La carpeta termina en `.git` por convención, para que se sepa que es un bare repo.
Volver a tu máquina local y conectar
Salí del servidor (`exit`) y volvé a tu proyecto local:
git remote add origin usuario@192.168.1.100:/srv/git/mi-primer-proyecto.git
`origin` es el nombre que Git le pone por defecto al remoto principal. Podrías llamarlo como quieras, pero todo el mundo usa `origin`.
Verificar la conexión:
git remote -v
Te muestra:
origin usuario@192.168.1.100:/srv/git/mi-primer-proyecto.git (fetch)
origin usuario@192.168.1.100:/srv/git/mi-primer-proyecto.git (push)
Subir tu primer commit al remoto
git push -u origin main
Te va a pedir la contraseña SSH del servidor (si no configuraste claves). La ponés y Git responde:
Enumerating objects: 3, done.
Counting objects: 100% (3/3), done.
Writing objects: 100% (3/3), 232 bytes | 232.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
To 192.168.1.100:/srv/git/mi-primer-proyecto.git
* [new branch] main -> main
Branch 'main' set up to track remote branch 'main' from 'origin'.
Tu commit está en el servidor. Podés borrar tu máquina local, formatearla, tirarla por la ventana. Desde cualquier otra máquina podés traerte todo:
git clone usuario@192.168.1.100:/srv/git/mi-primer-proyecto.git
¿Qué significa el `-u`?
`-u` es `–set-upstream`. Le dice a Git: "la próxima vez que hagas `git push` sin argumentos, ya sabés que tenés que subir a `origin main`". Lo hacés una sola vez y después olvidate.
Resumen del capítulo:
1. En el servidor: `mkdir repo.git && cd repo.git && git init –bare`
2. En tu máquina: `git remote add origin usuario@servidor:/ruta/repo.git`
3. Primera subida: `git push -u origin main`
Ya tenés backup y colaboración. En el próximo capítulo: modificar archivos, commitear y subir los cambios.
