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

  1. Ve a github.com
  2. Haz clic en "Sign up"
  3. 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

  1. Haz clic en el botón "+" en la esquina superior derecha
  2. Selecciona "New repository"
  3. Elige un nombre descriptivo
  4. Añade una descripción (opcional pero recomendado)
  5. Elige si será público o privado
  6. NO inicialices con README si ya tienes un repo local
  7. 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
  1. Ve a GitHub → Settings → SSH and GPG keys → New SSH key
  2. 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
  1. Crea un nuevo repositorio público llamado aprendiendo-git.
  2. Clona el repositorio a tu máquina local.
  3. Crea un archivo README.md con una breve descripción.
  4. Realiza un commit con el mensaje "Añade README inicial".
  5. Usa git pull para traer los cambios a tu máquina local (no los hay, pero es buena práctica).
  6. Haz git push para subir tus cambios al repositorio remoto.
  7. Revisa con git log el historial de commits.
Actividad 2
  1. Clona un repositorio público de tu elección (por ejemplo, https://github.com/torvalds/linux).
  2. Explora el historial con git log.

This work is under a Attribution-NonCommercial-NoDerivatives 4.0 International license.

Will you buy me a coffee?