Capítulo 9: Clonar — Traer el repositorio completo a otra máquina
Hasta ahora trabajaste siempre en la misma máquina donde creaste el repo. Pero la gracia de tener un servidor remoto es poder bajar el proyecto en cualquier otro lado: tu notebook, la PC de tu casa, el servidor de producción, la máquina de un compañero.
Clonar es como copiar, pero mejor
No es un simple `cp`. Clonar es bajar el repo completo con TODO su historial, todas las ramas, todos los commits. No una foto del código, sino una copia viva de Git con capacidad de seguir trabajando.
Clonar desde el servidor
En la otra máquina (o en otra carpeta de tu misma máquina, para probar):
git clone usuario@192.168.1.100:/srv/git/mi-primer-proyecto.git
Te pide la contraseña SSH y después:
Cloning into 'mi-primer-proyecto'...
done.
Acaba de pasar esto:
1. Creó una carpeta llamada `mi-primer-proyecto`
2. Bajó todos los commits
3. Bajó todas las ramas
4. Configuró automáticamente el remoto `origin` apuntando al servidor
5. Hizo checkout automático de `main`
Entrás a la carpeta y ya tenés todo:
cd mi-primer-proyecto
git log --oneline
3c4d5e6 (HEAD -> main, origin/main, origin/HEAD) Merge branch 'feature/login'
b2c3d4e Agrego validacion de login
a2b3c4d Agrego formulario de login
1a2b3c4 Corrijo typo en README
a1b2c3d Primer commit: README inicial
Ves remoto (`origin/main`) y local (`main`) apuntando al mismo lugar.
Trabajar después de clonar
Ya estás listo para el ciclo diario:
# editás archivos...
git add .
git commit -m "Cambio desde la otra maquina"
git push
Así de simple. La clonación ya dejó todo configurado.
Clonar en una carpeta con nombre distinto
Si no querés que la carpeta se llame como el repo:
git clone usuario@192.168.1.100:/srv/git/mi-primer-proyecto.git mi-proyecto-clonado
El último argumento es el nombre de la carpeta destino.
¿Qué pasa si alguien más hizo push mientras trabajabas?
Antes de pushear, siempre conviene traerse los cambios que hayan subido otros:
git pull
`git pull` hace dos cosas: git fetch (baja los cambios del remoto sin aplicarlos) + git merge (los fusiona con tu rama local). Es como decir "traeme lo nuevo y fusionalo con lo que tengo".
Si no hay conflictos, Git hace un merge automático y te deja listo para seguir. Si los hay, los resolvés igual que en el capítulo anterior.
El ciclo completo en equipo:
# 1. Arrancás el día
git pull
# 2. Trabajás en tu rama
git checkout -b feature/algo
# ... editás archivos ...
git add .
git commit -m "Agrego algo"
# 3. Volvés a main y traés cambios nuevos
git checkout main
git pull
# 4. Fusionás tu rama
git merge feature/algo
# 5. Subís todo
git push
# 6. Borrás la rama
git branch -d feature/algo
Ese flujo —pull, rama, commit, merge, push— es el pan de cada día de cualquier desarrollador que use Git en serio.
Resumen del capítulo:
En el próximo capítulo: el cierre de la serie — el flujo diario completo en 5 comandos.
