🐙 GitHub Cheatsheet Completo 🐙

GitHub es una plataforma web para el alojamiento de repositorios de control de versiones Git. Facilita la colaboración en proyectos de software, la gestión de código, la revisión de código, el seguimiento de problemas y la automatización del flujo de trabajo de desarrollo.


1. 🌟 Conceptos Clave (GitHub vs. Git)


2. 🛠️ Configuración Inicial y Repositorios

2.1. Cuenta y Perfil

2.2. Crear un Nuevo Repositorio en GitHub

  1. Ve a tu perfil de GitHub y haz clic en el botón + (New repository).
  2. Define:
    • Owner: Tu usuario o una organización.
    • Repository name: Nombre del proyecto (ej. my-awesome-project).
    • Description (optional).
    • Public/Private: Visibilidad del repositorio.
    • Add a README file: Recomendado para una descripción inicial.
    • Add .gitignore: Elige una plantilla para tu lenguaje/framework.
    • Choose a license: Para código abierto.
  3. Haz clic en “Create repository”.

2.3. Clonar un Repositorio (Localmente)

2.4. Enlazar un Repositorio Local a GitHub


3. 📝 Funcionalidades del Repositorio (Web UI)

En la página principal de un repositorio en GitHub, verás varias pestañas:


4. 🤝 Flujo de Colaboración (Pull Request Workflow)

El modelo de colaboración más común en GitHub.

  1. Forkear el Repositorio (si contribuyes a un proyecto externo):

    • En la página del repositorio original, haz clic en Fork. Esto crea una copia en tu cuenta.
  2. Clonar tu Fork (o el repositorio original si eres colaborador directo):

    git clone git@github.com:tu_usuario/nombre_del_fork.git
    cd nombre_del_fork/
  3. Crear una Nueva Rama para tu Característica/Corrección:

    • Es crucial trabajar en una rama separada para tus cambios.
    git checkout -b mi-nueva-feature
  4. Realizar Cambios y Commits (Localmente):

    • Modifica archivos.
    • git add .
    • git commit -m "feat: añade la nueva característica X"
    • Repite hasta que la característica esté completa.
  5. Subir tu Rama a GitHub (Push):

    git push -u origin mi-nueva-feature
  6. Crear un Pull Request (PR):

    • Ve a la página de tu repositorio en GitHub.
    • Verás un botón o notificación para “Compare & pull request” desde tu rama recién subida.
    • Elige la rama base (a la que quieres fusionar, ej. main o develop del repositorio original) y la rama de comparación (tu mi-nueva-feature).
    • Escribe un título claro y una descripción detallada del PR.
    • Puedes vincular Issues, añadir revisores, etiquetas, proyectos.
  7. Revisión de Código (Code Review):

    • Otros desarrolladores (o el mantenedor del proyecto) revisarán tus cambios, dejarán comentarios, sugerencias o solicitarán más cambios.
    • Si hay cambios solicitados, realízalos en tu rama local, haz nuevos commits y git push (el PR se actualizará automáticamente).
  8. Fusionar el PR (Merge Pull Request):

    • Una vez aprobado, el PR puede ser fusionado.
    • Opciones de Merge:
      • Create a merge commit: Mantiene el historial de commits original y añade un commit de merge.
      • Squash and merge: Combina todos los commits de la rama del PR en un solo commit antes de fusionar. Historial más limpio.
      • Rebase and merge: Rebasea los commits del PR sobre la rama base, creando un historial lineal. ¡CUIDADO con rebase si ya compartiste commits!
  9. Sincronizar tu Fork (Opcional, para proyectos forkados):

    • Para mantener tu fork actualizado con el repositorio original (upstream):
      git remote add upstream <URL_del_repositorio_original>
      git fetch upstream
      git checkout main # O tu rama de desarrollo
      git merge upstream/main
      git push origin main

5. 🚀 GitHub Actions (CI/CD)

GitHub Actions te permite automatizar tareas directamente en tus repositorios.

Ejemplo Básico de Workflow (.github/workflows/build-test.yml):

name: CI Build and Test # Nombre del workflow

on: # Eventos que disparan el workflow
  push:
    branches: [ "main" ] # Se ejecuta en pushes a la rama main
  pull_request:
    branches: [ "main" ] # Se ejecuta en PRs a la rama main

jobs: # Conjunto de tareas
  build: # Nombre del job
    runs-on: ubuntu-latest # Sistema operativo del runner

    steps: # Pasos del job
      - uses: actions/checkout@v4 # Action para clonar el repositorio
      - name: Setup Node.js # Nombre del paso
        uses: actions/setup-node@v4 # Action para configurar Node.js
        with:
          node-version: '20' # Versión de Node.js
      - name: Install dependencies # Paso para instalar dependencias
        run: npm ci # 'ci' para instalación limpia
      - name: Run tests # Paso para ejecutar pruebas
        run: npm test

6. 🔒 Seguridad y Acceso


7. 💡 Consejos y Mejores Prácticas


Este cheatsheet te proporciona una referencia completa de GitHub, cubriendo sus conceptos esenciales, cómo interactuar con repositorios, el flujo de colaboración, GitHub Actions y las mejores prácticas para un desarrollo de software eficiente y colaborativo.