¿Qué es GitHub?

GitHub es la plataforma líder para alojar, gestionar y colaborar en código fuente con Git. Guía completa con funcionalidades, GitHub Actions, Copilot y alternativas.

Definición

GitHub es la plataforma de desarrollo de software más utilizada del mundo, diseñada para alojar, gestionar y colaborar en proyectos de código fuente utilizando el sistema de control de versiones Git. Ofrece repositorios públicos y privados, herramientas de colaboración, automatización de flujos de trabajo y funcionalidades de inteligencia artificial para desarrolladores.

Con más de 100 millones de desarrolladores y más de 420 millones de repositorios, GitHub se ha convertido en el centro neurálgico del desarrollo de software a nivel mundial, albergando desde proyectos open source emblemáticos como Linux, React y Kubernetes hasta código propietario de empresas Fortune 500.

Historia y origen

GitHub fue fundado en 2008 por Tom Preston-Werner, Chris Wanstrath, P.J. Hyett y Scott Chacon. La plataforma se lanzó oficialmente en abril de 2008 y creció rápidamente gracias a su modelo freemium que ofrecía repositorios públicos gratuitos.

En junio de 2018, Microsoft adquirió GitHub por 7.500 millones de dólares, una de las adquisiciones más importantes en la historia del desarrollo de software. Bajo la dirección de Nat Friedman primero y Thomas Dohmke después como CEO, GitHub ha mantenido su independencia operativa y ha acelerado el desarrollo de nuevas funcionalidades.

Funcionalidades principales

Repositorios

Un repositorio (repo) de GitHub es un espacio de almacenamiento para un proyecto que contiene todos los archivos del código fuente, el historial de cambios y la documentación. Los repositorios pueden ser:

  • Públicos: visibles y accesibles para cualquier persona. Son la base del ecosistema open source.
  • Privados: solo accesibles para los colaboradores autorizados. Utilizados para código propietario y proyectos internos.

Pull Requests (PR)

Los Pull Requests son el mecanismo central de colaboración en GitHub. Permiten a los desarrolladores proponer cambios en el código, solicitar revisiones de otros miembros del equipo y discutir las modificaciones antes de integrarlas en la rama principal.

Un flujo típico de Pull Request incluye:

  1. Crear una rama (branch) desde la rama principal.
  2. Realizar los cambios y hacer commits.
  3. Abrir un Pull Request describiendo los cambios.
  4. Los revisores comentan, sugieren cambios y aprueban.
  5. El Pull Request se fusiona (merge) en la rama principal.

Issues y Projects

GitHub Issues es un sistema de seguimiento de tareas, bugs y solicitudes de funcionalidades integrado en cada repositorio. Permite:

  • Crear tickets con etiquetas, asignaciones y milestones.
  • Referenciar issues desde commits y Pull Requests.
  • Usar plantillas para estandarizar la creación de issues.

GitHub Projects ofrece tableros Kanban y vistas de tabla para planificar y gestionar el trabajo, compitiendo con herramientas como Jira y Asana.

Code Review

GitHub proporciona herramientas robustas para la revisión de código directamente en los Pull Requests:

  • Comentarios en líneas específicas del código.
  • Sugerencias de cambio que se pueden aplicar directamente.
  • Flujos de aprobación con revisores requeridos.
  • Checks automáticos de calidad y tests.

GitHub Actions

GitHub Actions es la plataforma de CI/CD integrada de GitHub que permite automatizar flujos de trabajo directamente desde el repositorio. Permite definir workflows en archivos YAML que se ejecutan ante eventos como push, pull request, schedules o triggers manuales.

Casos de uso comunes de GitHub Actions:

  • Integración continua: ejecutar tests automáticamente ante cada push o PR.
  • Despliegue continuo: desplegar a producción tras la aprobación de un PR.
  • Linting y formateo: verificar la calidad del código automáticamente.
  • Publicación: publicar paquetes en registros como npm, PyPI o Docker Hub.
  • Notificaciones: enviar alertas a Slack u otros canales ante eventos del repositorio.

# Ejemplo básico de GitHub Actions name: CI on: [push, pull_request] jobs: test: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: node-version: '20' - run: npm install - run: npm test

GitHub Copilot

GitHub Copilot es un asistente de programación basado en inteligencia artificial que sugiere código en tiempo real dentro del editor. Desarrollado en colaboración con OpenAI, Copilot puede:

  • Autocompletar funciones y bloques de código.
  • Generar código a partir de comentarios en lenguaje natural.
  • Sugerir tests y documentación.
  • Explicar código existente.
  • Responder preguntas técnicas en el chat integrado.

GitHub Pages

GitHub Pages permite publicar sitios web estáticos directamente desde un repositorio de GitHub, de forma gratuita. Es ampliamente utilizado para:

  • Documentación de proyectos.
  • Portfolios personales.
  • Blogs técnicos.
  • Páginas de landing para proyectos open source.

GitHub Packages

Un registro de paquetes integrado que permite publicar y consumir paquetes (npm, Maven, Docker, NuGet, etc.) directamente desde GitHub, vinculados a sus repositorios de código.

Seguridad

GitHub incluye funcionalidades de seguridad avanzadas:

  • Dependabot: detecta dependencias vulnerables y crea PRs automáticos con las actualizaciones.
  • Code Scanning: análisis estático de seguridad del código.
  • Secret Scanning: detección de credenciales y secretos accidentalmente incluidos en el código.
  • Security Advisories: gestión de vulnerabilidades en proyectos open source.

GitHub y flujos de trabajo Git

GitHub soporta diferentes estrategias de ramificación (branching strategies):

GitHub Flow

El flujo de trabajo recomendado por GitHub es simple:

  1. La rama main siempre está desplegable.
  2. Crear ramas de feature para cada cambio.
  3. Abrir PRs para revisión.
  4. Fusionar a main tras la aprobación.
  5. Desplegar inmediatamente.

GitFlow

GitFlow es una estrategia más compleja con ramas de desarrollo, release, hotfix y feature. Es útil para proyectos con ciclos de release definidos.

Trunk-Based Development

Desarrollo basado en tronco, donde todos los desarrolladores trabajan sobre una sola rama principal con integraciones frecuentes y pequeñas.

Planes y precios

Plan Repositorios Acciones (minutos/mes) Ideal para
Free Ilimitados (públicos y privados) 2.000 Desarrolladores individuales y open source
Team Ilimitados 3.000 Equipos de desarrollo
Enterprise Ilimitados 50.000 Grandes organizaciones

GitHub vs alternativas

Plataforma Fortaleza principal Mejor para
GitHub Ecosistema y comunidad Open source y colaboración global
GitLab DevOps all-in-one Equipos que buscan CI/CD integrado
Bitbucket Integración con Atlassian Equipos que usan Jira y Confluence
Azure DevOps Integración con Microsoft Empresas del ecosistema Microsoft
Gitea/Forgejo Self-hosted y ligero Organizaciones que necesitan control total

GitHub en el ecosistema DevOps

GitHub se ha posicionado como una pieza central del ecosistema DevOps:

  • Source Control: gestión de código fuente con Git.
  • CI/CD: automatización con GitHub Actions.
  • Infrastructure as Code: almacenamiento de configuraciones de infraestructura.
  • Seguridad: escaneo de dependencias, código y secretos.
  • Colaboración: PRs, code reviews y discusiones.
  • Monitorización: GitHub Insights y métricas de rendimiento del equipo.

Preguntas frecuentes

¿Cuál es la diferencia entre Git y GitHub?

Git es un sistema de control de versiones distribuido que funciona localmente. GitHub es una plataforma web que aloja repositorios Git y añade funcionalidades de colaboración, automatización y gestión de proyectos. Git es la herramienta; GitHub es el servicio que la complementa.

¿GitHub es gratuito?

Sí, GitHub ofrece un plan gratuito muy completo que incluye repositorios públicos y privados ilimitados, GitHub Actions con 2.000 minutos al mes, GitHub Pages, Issues, Projects y muchas más funcionalidades. Los planes de pago añaden funcionalidades avanzadas de seguridad, soporte y administración para equipos y empresas.

¿Es obligatorio usar GitHub para desarrollar software?

No. Existen alternativas como GitLab, Bitbucket y Azure DevOps. Además, Git puede usarse de forma local sin ninguna plataforma web. Sin embargo, GitHub es la plataforma más popular y ofrece el ecosistema más amplio de integraciones y comunidad.

¿Qué es un fork en GitHub?

Un fork es una copia independiente de un repositorio en tu cuenta de GitHub. Permite experimentar con cambios sin afectar al repositorio original. Los forks son fundamentales para la contribución al open source: haces fork, realizas cambios y envías un Pull Request al repositorio original.

¿GitHub es seguro para código propietario?

Sí. GitHub ofrece repositorios privados, controles de acceso granulares, autenticación de dos factores, SSO/SAML empresarial, registros de auditoría y múltiples certificaciones de seguridad (SOC 2 Type II, entre otras). Miles de empresas Fortune 500 alojan su código propietario en GitHub.

¿Qué es GitHub Codespaces?

GitHub Codespaces es un entorno de desarrollo en la nube que permite abrir cualquier repositorio en un editor VS Code completo directamente en el navegador. Elimina la necesidad de configurar entornos locales y facilita la colaboración y el onboarding de nuevos miembros del equipo.

¿Qué es GitHub Discussions?

GitHub Discussions es un foro de discusión integrado en cada repositorio que permite a la comunidad hacer preguntas, compartir ideas y mantener conversaciones que no encajan como Issues. Es especialmente útil para proyectos open source donde la comunidad necesita un espacio para discutir propuestas, pedir ayuda y compartir conocimiento sin mezclar estas conversaciones con los reportes de bugs.

¿Cómo contribuir a proyectos open source en GitHub?

El flujo típico de contribución es: buscar un proyecto que te interese, leer sus guías de contribución (CONTRIBUTING.md), hacer un fork del repositorio, crear una rama con tus cambios, abrir un Pull Request describiendo tu contribución, y responder al feedback de los mantenedores. GitHub facilita este proceso con etiquetas como "good first issue" que señalan tareas adecuadas para nuevos contribuidores.

¿Qué son las GitHub Actions y por qué son importantes?

GitHub Actions es la plataforma de CI/CD integrada de GitHub que permite automatizar flujos de trabajo de compilación, pruebas y despliegue directamente desde el repositorio. Su importancia radica en que elimina la necesidad de configurar servidores de CI externos, ofrece un marketplace con miles de acciones reutilizables creadas por la comunidad, y se integra nativamente con el resto del ecosistema de GitHub.

Acceso

Para acceder a GitHub, visita github.com.

🍄

¿Quieres saber más?

Si te interesa saber más acerca de GitHub, escríbeme por linkedin. Me encanta compartir ideas, dudas y curiosidades sobre estos temas, así que no dudes en pasarte por ahí. ¡Nos leemos!