3. Trabajo con Repositorios Remotos
Hasta ahora hemos trabajado localmente. Es momento de conectar nuestro trabajo con repositorios remotos y colaborar con otros.
¿Qué es GitHub?
GitHub es una plataforma de hosting para repositorios Git. Alternativas incluyen GitLab y Bitbucket. Lo usaremos por su popularidad y porque además es gratuito.
Tener un hosting remoto, o Git Server, nos permite sincronizar nuestro trabajo con otros desarrolladores. No es esencial pero simplifica la colaboración. En caso contrario tendríamos que compartir nuestros parches, o cambios, manualmente por email u otros medios (git format-patch y git am).
Además, GitHub añade funcionalidades sobre Git muy útiles:
- Interfaz web para visualizar código
- Pull Requests (revisiones de código)
- Issues (seguimiento de bugs y tareas)
- Actions (automatización)
- Wikis y documentación
Y mucho más.
Crear una cuenta en GitHub
- Ve a github.com
- Haz clic en "Sign up"
- Sigue las instrucciones
Consejos:
- Elige un nombre de usuario profesional (lo verán futuros jefes, compañeros de trabajo, etc.)
- Usa un email que revises regularmente
- Activa la autenticación de dos factores (2FA)
Crear un repositorio en GitHub
- Haz clic en el botón "+" en la esquina superior derecha
- Selecciona "New repository"
- Elige un nombre descriptivo
- Añade una descripción (opcional pero recomendado)
- Elige si será público o privado
- NO inicialices con README si ya tienes un repo local
- Haz clic en "Create repository"
git remote
Un "remote" es una referencia a un repositorio en otro lugar (generalmente en GitHub). El remote más común se llama origin.
# Ver los remotes configurados
git remote -v
# Añadir un remote
git remote add origin https://github.com/usuario/repo.git
# Cambiar la URL de un remote
git remote set-url origin https://github.com/usuario/nuevo-repo.git
# Eliminar un remote
git remote remove origin
git clone
Clonar es copiar un repositorio completo de un lugar remoto a tu máquina local.
# Clonar un repositorio
git clone https://github.com/usuario/repo.git
# Clonar en un directorio específico
git clone https://github.com/usuario/repo.git mi-carpeta
# Clonar solo la última versión (más rápido)
git clone --depth 1 https://github.com/usuario/repo.git
git push
Envía tus commits locales al repositorio remoto.
# Push a la rama actual
git push
# Primera vez (establece tracking)
git push -u origin main
# Push a una rama específica
git push origin nombre-rama
# Push de todas las ramas
git push --all
# Push forzado (¡cuidado!)
git push --force
Ejemplo completo:
# En tu repo local
echo "Nuevo contenido" > archivo.txt
git add archivo.txt
git commit -m "Añade nuevo archivo"
# Enviar al remoto
git push origin main
git pull
Descarga cambios del repositorio remoto y los fusiona con tu rama local.
# Pull de la rama actual
git pull
# Pull de una rama específica
git pull origin main
git fetch vs git pull
Esta es una distinción importante:
- git fetch: Descarga cambios pero NO los fusiona
- git pull: Descarga cambios Y los fusiona (equivale a
fetch+merge)
# Fetch: solo descargar
git fetch origin
# Ver qué cambios hay sin fusionar
git log origin/main
# Decidir fusionar
git merge origin/main
Cuándo usar cada uno:
- fetch: Cuando quieres ver los cambios antes de fusionarlos
- pull: Cuando confías en los cambios y quieres actualizar rápido
SSH vs HTTPS: autenticación
Hay dos formas de autenticarte con GitHub:
HTTPS
Más simple de configurar, pero necesitas ingresar tu usuario y contraseña (o token) cada vez que haces push.
git clone https://github.com/usuario/repo.git
SSH
Más seguro y cómodo una vez configurado.
Configurar SSH:
# 1. Generar una clave SSH
ssh-keygen -t ed25519 -C "tu@email.com"
# 2. Añadir la clave al agente SSH
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_ed25519
# 3. Copiar la clave pública
cat ~/.ssh/id_ed25519.pub
- Ve a GitHub → Settings → SSH and GPG keys → New SSH key
- Pega tu clave pública
Clonar con SSH:
git clone git@github.com:usuario/repo.git
Usa SSH si trabajas frecuentemente con Git.
Flujo de trabajo básico
Un flujo típico de trabajo con remotos:
# 1. Clonar el repositorio
git clone git@github.com:usuario/repo.git
cd repo
# 2. Hacer cambios
echo "Cambio" >> README.md
git add README.md
git commit -m "Actualiza README"
# 3. Antes de push, obtener cambios
git pull
# 4. Resolver conflictos si los hay
# 5. Enviar cambios
git push
Actividad 1
- Crea un nuevo repositorio público llamado
aprendiendo-git. - Clona el repositorio a tu máquina local.
- Crea un archivo
README.mdcon una breve descripción. - Realiza un commit con el mensaje "Añade README inicial".
- Usa
git pullpara traer los cambios a tu máquina local (no los hay, pero es buena práctica). - Haz
git pushpara subir tus cambios al repositorio remoto. - Revisa con
git logel historial de commits.
Actividad 2
- Clona un repositorio público de tu elección (por ejemplo,
https://github.com/torvalds/linux). - Explora el historial con
git log.
This work is under a Attribution-NonCommercial-NoDerivatives 4.0 International license.