Skip to content

Repositorios remotos con GitHub

Módulo 3: Repositorios remotos con GitHub

Section titled “Módulo 3: Repositorios remotos con GitHub”

Los repositorios remotos son versiones de tu proyecto alojadas en internet. GitHub es la plataforma más popular para alojar repositorios Git. En este módulo aprenderás a trabajar con repositorios remotos de manera eficiente.

Antes de conectar tu repositorio local con GitHub, necesitas crear un repositorio remoto en la plataforma.

  1. Iniciar sesión en github.com

  2. Crear nuevo repositorio: Haz clic en el botón ”+” → “New repository”

  3. Configurar repositorio:

    • Repository name: Nombre único y descriptivo
    • Description: Descripción breve del proyecto (opcional)
    • Visibility: Public (visible para todos) o Private (solo para ti)
    • Initialize: Opciones de inicialización
  4. Opciones de inicialización:

    • Add a README file: Recomendado para nuevos proyectos
    • Add .gitignore: Selecciona plantilla según tu tecnología
    • Choose a license: Importante para proyectos open source

Ventajas:

  • Visible en tu perfil
  • Otros pueden contribuir
  • Ideal para portafolio
  • GitHub Pages gratuito

Consideraciones:

  • Código visible para todos
  • No incluir información sensible
  • Seguir buenas prácticas

Clonar es crear una copia local completa de un repositorio remoto, incluyendo todo su historial.

Opciones de clonación
# Clonar con HTTPS (requiere token para push)
git clone https://github.com/usuario/repositorio.git
# Clonar con SSH (requiere configuración de llaves)
git clone git@github.com:usuario/repositorio.git
# Clonar en directorio específico
git clone https://github.com/usuario/repositorio.git mi-proyecto
# Clonar solo la rama principal (más rápido)
git clone --single-branch https://github.com/usuario/repositorio.git
# Clonar con historial limitado
git clone --depth 1 https://github.com/usuario/repositorio.git
Terminal window
# URL HTTPS
https://github.com/usuario/repositorio.git
# Ventajas:
# - Funciona en cualquier red
# - No requiere configuración especial
# - Fácil de usar para principiantes
# Desventajas:
# - Requiere token para push
# - Puede ser más lento
# - Necesita autenticación frecuente
Verificar clonación
# Navegar al directorio clonado
cd repositorio
# Verificar configuración
git remote -v
git branch -a
git log --oneline
# Ver información del repositorio
git config --list --local

Conectar repositorio local con remoto (git remote add)

Section titled “Conectar repositorio local con remoto (git remote add)”

Si ya tienes un repositorio local y quieres conectarlo con GitHub, usa git remote add.

Agregar remoto
# Agregar remoto llamado 'origin' (convención estándar)
git remote add origin https://github.com/usuario/repositorio.git
# Verificar que se agregó correctamente
git remote -v
# Ver información detallada del remoto
git remote show origin
Gestionar remotos
# Agregar múltiples remotos
git remote add origin https://github.com/usuario/repositorio.git
git remote add upstream https://github.com/original/repositorio.git
git remote add backup https://gitlab.com/usuario/repositorio.git
# Ver todos los remotos
git remote -v
# Cambiar URL de remoto existente
git remote set-url origin git@github.com:usuario/repositorio.git
# Eliminar remoto
git remote remove backup
# Renombrar remoto
git remote rename origin github

git push envía tus commits locales al repositorio remoto.

Comandos push
# Push básico (primera vez)
git push -u origin main
# Push después de configurar upstream
git push
# Push de rama específica
git push origin nombre-rama
# Push de todas las ramas
git push --all origin
# Push incluyendo tags
git push --tags origin

Upstream es la rama remota que Git usa por defecto para git push y git pull.

Terminal window
# Configurar upstream en el primer push
git push -u origin main
# Equivale a:
git push --set-upstream origin main
# Después puedes usar simplemente:
git push
git pull
Solucionar errores de push
# Error: Updates were rejected
# Solución: Pull primero, luego push
git pull origin main
git push origin main
# Error: Non-fast-forward
# Solución: Merge o rebase
git pull --rebase origin main
git push origin main
# Forzar push (¡CUIDADO!)
git push --force origin main
# Mejor usar:
git push --force-with-lease origin main

Mantener tu repositorio local sincronizado con el remoto es esencial en el trabajo colaborativo.

Terminal window
# Descargar cambios sin fusionar
git fetch origin
# Fetch de rama específica
git fetch origin main
# Fetch de todos los remotos
git fetch --all
# Ver qué cambios hay disponibles
git log HEAD..origin/main --oneline
# Ver diferencias
git diff HEAD origin/main

git fetch:

  • Descarga cambios del remoto
  • NO modifica tu working directory
  • Actualiza referencias remotas
  • Seguro de usar siempre
  1. Verificar estado local

    Terminal window
    git status
    # Asegúrate de que no hay cambios sin confirmar
  2. Fetch para ver cambios disponibles

    Terminal window
    git fetch origin
    git log HEAD..origin/main --oneline
  3. Pull con la estrategia apropiada

    Terminal window
    # Para historial lineal (recomendado)
    git pull --rebase origin main
    # Para preservar contexto de merge
    git pull origin main
  4. Resolver conflictos si existen

    Terminal window
    # Si hay conflictos, Git te lo indicará
    git status
    # Editar archivos conflictivos
    git add archivo-resuelto.txt
    git rebase --continue # Si usaste --rebase
    git commit # Si usaste merge normal

Vamos a crear un flujo completo desde cero:

  1. Crear repositorio en GitHub

    • Ir a github.com → New repository
    • Nombre: “mi-proyecto-web”
    • Descripción: “Mi primer proyecto con Git y GitHub”
    • Público, sin inicializar
  2. Crear proyecto local

    Terminal window
    mkdir mi-proyecto-web
    cd mi-proyecto-web
    git init
    # Crear archivos iniciales
    echo "# Mi Proyecto Web" > README.md
    echo "console.log('Hola mundo');" > app.js
    # Primer commit
    git add .
    git commit -m "feat: estructura inicial del proyecto"
  3. Conectar con GitHub

    Terminal window
    git remote add origin https://github.com/tu-usuario/mi-proyecto-web.git
    git branch -M main
    git push -u origin main
  4. Continuar desarrollo

    Terminal window
    # Hacer cambios
    echo "body { font-family: Arial; }" > styles.css
    git add styles.css
    git commit -m "feat: agregar estilos básicos"
    # Subir cambios
    git push
  1. Clonar repositorio

    Terminal window
    git clone https://github.com/usuario/proyecto-existente.git
    cd proyecto-existente
  2. Explorar el proyecto

    Terminal window
    # Ver estructura
    ls -la
    # Ver historial
    git log --oneline
    # Ver remotos configurados
    git remote -v
    # Ver ramas disponibles
    git branch -a
  3. Hacer contribuciones

    Terminal window
    # Crear nueva funcionalidad
    echo "Nueva funcionalidad" > nueva-feature.js
    git add nueva-feature.js
    git commit -m "feat: agregar nueva funcionalidad"
    # Sincronizar antes de push
    git pull --rebase
    git push
Flujo colaborativo
# 1. Siempre pull antes de empezar a trabajar
git pull origin main
# 2. Crear rama para nueva funcionalidad
git checkout -b mi-funcionalidad
# 3. Desarrollar y hacer commits
git add .
git commit -m "feat: implementar mi funcionalidad"
# 4. Sincronizar con main antes de push
git checkout main
git pull origin main
git checkout mi-funcionalidad
git rebase main
# 5. Push de la rama
git push origin mi-funcionalidad
# 6. Crear Pull Request en GitHub
# 7. Después del merge, limpiar
git checkout main
git pull origin main
git branch -d mi-funcionalidad
Comandos de colaboración
# Ver quién modificó cada línea
git blame archivo.txt
# Ver cambios de otros colaboradores
git log --author="Nombre Colaborador"
# Ver estadísticas de contribuciones
git shortlog -sn
# Ver archivos modificados por otros
git diff --name-only HEAD~1 HEAD
# Crear patch para compartir cambios
git format-patch HEAD~1
# Aplicar patch recibido
git apply cambios.patch

Configurar diferentes URLs para fetch y push

Section titled “Configurar diferentes URLs para fetch y push”
URLs múltiples
# Configurar URL diferente para push (útil para forks)
git remote set-url --push origin git@github.com:mi-usuario/mi-fork.git
# Ver configuración
git remote -v
# origin https://github.com/original/repo.git (fetch)
# origin git@github.com:mi-usuario/mi-fork.git (push)
# Agregar múltiples URLs de push
git remote set-url --add --push origin git@gitlab.com:mi-usuario/repo.git
Configurar pull
# Configurar pull para hacer rebase por defecto
git config pull.rebase true
# Solo para este repositorio
git config --local pull.rebase true
# Configurar fast-forward only
git config pull.ff only
# Ver configuración actual
git config --get pull.rebase
Problemas frecuentes
Terminal window
# Error: Authentication failed
# Solución 1: Verificar token
git config --global credential.helper store
# Hacer push y usar token como contraseña
# Solución 2: Cambiar a SSH
git remote set-url origin git@github.com:usuario/repo.git
# Solución 3: Verificar configuración
git config --list | grep credential

En este módulo has aprendido:

Repositorios remotos
  • Crear repositorios en GitHub
  • git clone: Clonar repositorios existentes
  • git remote: Conectar repositorios locales con remotos
  • git push: Subir cambios al repositorio remoto
  • git pull/fetch: Descargar cambios del repositorio remoto
  • Sincronización: Mantener repositorios actualizados
  • Colaboración: Trabajar en equipo eficientemente
  • Solución de problemas: Resolver conflictos comunes

En el próximo módulo aprenderemos sobre ramas (branches), una de las características más poderosas de Git para el desarrollo paralelo y la organización del trabajo.

🐝