GitHub es la plataforma web más grande para alojar repositorios Git, desarrollo colaborativo y automatización de procesos, propiedad de Microsoft. Proporciona no solo almacenamiento de código con control de versiones, sino también un conjunto completo de herramientas de gestión de proyectos: seguimiento de Issues, Pull Requests con revisión de código, Actions para CI/CD y Wiki para documentación. Según GitHub, 2024, la plataforma cuenta con más de 100 millones de desarrolladores y 420 millones de repositorios.
Puntos clave
GitHub es un servicio web para almacenar y colaborar en repositorios Git, fundado en 2008 por Tom Preston-Werner, Chris Wanstrath y PJ Hyett. En 2018, la empresa fue adquirida por Microsoft por 7500 millones de dólares. La plataforma proporciona una interfaz web para todas las operaciones de Git, añadiendo funciones sociales: forks, estrellas, suscripciones, revisión de código y un sistema de integración continua integrado.
La diferencia clave entre GitHub y sus competidores es su ecosistema abierto y la comunidad de desarrolladores más grande. GitHub aloja el código fuente de Android, Kubernetes, React, Swift, Kotlin y miles de otros proyectos de código abierto. Esto convierte a la plataforma no solo en una herramienta de almacenamiento de código, sino también en una red social para desarrolladores: puedes seguir proyectos, discutir cambios y contribuir a través de pull requests.
Según un informe de Microsoft (2024), más de 10 millones de nuevos Pull Requests pasan por GitHub diariamente, y el número de usuarios activos mensuales ha superado los 100 millones. La plataforma admite más de 500 lenguajes de programación, detección automática de idioma por extensión de archivo y resaltado de sintaxis de código.
La funcionalidad de GitHub va mucho más allá del simple alojamiento Git. La plataforma proporciona: GitHub Actions — un sistema CI/CD integrado; GitHub Packages — un registro de paquetes y contenedores; GitHub Codespaces — entornos de desarrollo en la nube basados en VS Code; GitHub Discussions — un foro para la comunidad; GitHub Security — Dependabot para actualizaciones automáticas de dependencias y escaneo de vulnerabilidades; GitHub Copilot — un asistente de IA para escribir código.
Para organizaciones, GitHub ofrece GitHub Enterprise — una versión empresarial con alojamiento propio (GitHub Enterprise Server) o implementación en la nube (GitHub Enterprise Cloud). Las funciones empresariales incluyen autenticación SAML/SSO, registro de auditoría, políticas de seguridad de repositorios y SLA de disponibilidad del 99,95 %. La versión Enterprise es utilizada por empresas como Google, Apple y Airbnb.
Una característica importante de GitHub es GitHub CLI (gh), que permite realizar todas las operaciones de la plataforma desde la línea de comandos sin utilizar la interfaz web. Con gh, puedes crear repositorios, gestionar Issues, revisar Pull Requests y ejecutar Actions directamente desde la terminal, acelerando el trabajo de los desarrolladores acostumbrados a la línea de comandos.
| Función | Propósito | Disponibilidad |
|---|---|---|
| Actions | CI/CD y automatización | Gratis 2000 min/mes |
| Codespaces | IDE en la nube basado en VS Code | De pago, 60 h/mes gratis |
| Packages | Alojamiento de paquetes e imágenes Docker | Gratis 500 MB |
| Dependabot | Actualizaciones automáticas de dependencias | Gratis para repos públicos |
| Pages | Alojamiento de sitios estáticos | Gratis |
Pull Request (PR) es el mecanismo principal para realizar cambios en un proyecto en GitHub. Un desarrollador crea una rama con cambios, la publica en GitHub y envía una solicitud de fusión (Pull Request) a la rama principal. Otros participantes del proyecto ven la diferencia (diff) entre las ramas, pueden dejar comentarios en líneas específicas de código, sugerir cambios y aprobar o rechazar la solicitud.
El proceso de revisión de código en GitHub se construye en torno a los PR. Cada comentario se adjunta a una línea específica del diff y puede ser de tres tipos: Comment (comentario normal), Request Changes(requiere correcciones) y Approve (aprobación). Después de realizar cambios, el autor actualiza el PR con un nuevo commit y el proceso de revisión se repite. Una vez que se resuelven todos los problemas y se aprueba el PR, los cambios se fusionan en la rama de destino.
# Crear una rama de funcionalidad y hacer push
git checkout -b fix-login-bug
git add src/
git commit -m "Fix login validation error"
git push -u origin fix-login-bug
# Crear un PR mediante CLI
gh pr create --base main --title "Fix login validation" \
--body "Fixed edge case with empty email field"
# Ver y fusionar un PR
gh pr review --approve fix-login-bug
gh pr merge --squash fix-login-bug
GitHub admite reglas de protección de ramas: puedes evitar los envíos directos a main, exigir un número obligatorio de aprobaciones antes de fusionar, ejecutar comprobaciones de Actions y exigir que la rama esté actualizada antes de la fusión. La protección de ramas se configura en Settings → Branches y es una práctica obligatoria para proyectos de producción, evitando la introducción accidental de código inestable en la rama principal.
GitHub Actions es una plataforma CI/CD integrada que permite automatizar flujos de trabajo directamente en el repositorio. Los flujos de trabajo se describen en archivos YAML ubicados en el directorio .github/workflows/. Cada flujo de trabajo consta de uno o más trabajos que se ejecutan en runners — máquinas virtuales con Linux, Windows o macOS.
Actions admite un modelo basado en eventos: los flujos de trabajo se activan al hacer push, crear un PR, publicar un lanzamiento, según un horario o a través de webhook. Esto permite automatizar la compilación, la ejecución de pruebas, el análisis estático de código, la publicación en tiendas de aplicaciones y el despliegue en un servidor sin intervención del desarrollador. A continuación se muestra un ejemplo de flujo de trabajo para un proyecto Android:
name: Android CI
on:
pull_request:
branches: [ main ]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up JDK 17
uses: actions/setup-java@v4
with:
java-version: '17'
- name: Build with Gradle
run: ./gradlew assembleDebug
El ecosistema de Actions incluye más de 20 000 acciones listas para usar en GitHub Marketplace. Acciones populares: checkout (clonar repositorio), setup-java/setup-node/setup-python (configuración del entorno), upload-artifact (guardar artefactos de compilación), cache (almacenamiento en caché de dependencias para acelerar), slack-notify (enviar notificaciones a Slack). Actions también admite compilaciones matriciales — ejecución simultánea en múltiples versiones de SO o lenguajes.
Issues es un sistema integrado de seguimiento de tareas en GitHub. Cada Issue tiene un título, descripción, etiquetas, personas asignadas, hitos y Pull Requests vinculados. Los Issues pueden tener plantillas — se utilizan diferentes plantillas para informes de errores, solicitudes de funciones o preguntas, que se insertan automáticamente al crearlos.
GitHub Projects (anteriormente Projects Beta) es una herramienta de gestión de proyectos basada en tableros, similar a Jira y Trello. Projects admite campos personalizados (estado, prioridad, sprint), vinculación con Issues y Pull Requests, automatización del movimiento de tarjetas cuando cambia el estado de la tarea y análisis en forma de gráfico de burn-down. Projects está disponible en dos modos: Table (vista de tabla) y Board (tablero kanban).
Para la gestión de lanzamientos, GitHub proporciona Milestones — grupos de Issues y PR unidos por un objetivo común con una fecha límite. Cada hito muestra el progreso: cuántas tareas están abiertas, cuántas están cerradas y si se está cumpliendo el plazo. Los hitos se integran con Releases — al publicar un lanzamiento, puedes vincularlo a un hito y generar automáticamente un CHANGELOG basado en los Issues cerrados.
GitHub Pages es un alojamiento gratuito para sitios estáticos que publica automáticamente el contenido del repositorio en https://username.github.io/repository. Pages admite HTML, CSS, JavaScript y generadores estáticos: Jekyll (integrado), Hugo, Next.js (exportación) y MkDocs. La configuración incluye elegir la rama y el directorio para la publicación, así como soporte para dominio personalizado.
Para documentación técnica, GitHub proporciona Wiki — un sistema wiki integrado que también se almacena como un repositorio Git. Wiki admite Markdown y permite editar páginas tanto a través de la interfaz web como localmente mediante push al repositorio wiki. Cada página de Wiki tiene su propio historial de cambios, lo cual es conveniente para documentar API, arquitectura y procesos del proyecto.
La combinación de GitHub Pages + Jekyll es una solución popular para sitios de documentación. Jekyll convierte automáticamente los archivos Markdown en páginas HTML estáticas, admite temas, navegación y búsqueda. Por ejemplo, la documentación de Android Developers solía usar Jekyll en GitHub Pages, y ahora usa una plataforma interna, pero miles de proyectos de código abierto continúan usando esta combinación para sus sitios.
GitHub CLI (gh) permite realizar todas las operaciones de la plataforma a través de la línea de comandos: crear repositorios, gestionar Issues, ver y aprobar Pull Requests, ejecutar Actions. El comando gh repo create my-project --public crea un repositorio remoto y lo vincula con el local, mientras que gh pr create crea un Pull Request desde la rama actual. CLI acelera el trabajo de los desarrolladores que prefieren la terminal a la interfaz web.
GitHub REST API y GraphQL API proporcionan acceso programático a todas las funciones de la plataforma: crear Issues, gestionar usuarios, obtener estadísticas y gestionar Actions. GraphQL API es preferible para consultas complejas, ya que permite obtener solo los campos necesarios en una sola solicitud. El límite de tasa para REST API es de 5000 solicitudes por hora para usuarios autenticados. La API se utiliza ampliamente para integrar GitHub con sistemas CI externos y herramientas internas de DevOps.
GitHub Gist es un servicio para publicar fragmentos de código sin crear un repositorio completo. Gist admite resaltado de sintaxis, incrustación en sitios externos e historial de versiones. Cada Gist puede ser público (visible en búsquedas) o secreto (accesible solo mediante enlace). Gist se utiliza para compartir rápidamente configuraciones, registros y ejemplos de código en la correspondencia del equipo, y también como una alternativa a Pastebin para desarrolladores.
Preguntas frecuentes
GitHub se centra en la comunidad abierta y las funciones sociales (forks, estrellas). GitLab ofrece un CI/CD integrado más potente y alojamiento autogestionado sin limitaciones en los minutos de Actions.
GitHub Team cuesta 4 dólares por usuario al mes y proporciona repositorios privados ilimitados, protección de ramas y Actions (3000 minutos). El plan gratuito es adecuado para proyectos pequeños de código abierto.
Al crear un repositorio, selecciona Private en lugar de Public. En los repositorios privados, el código solo es visible para los colaboradores invitados. En el plan gratuito, los repositorios privados están disponibles con un límite de hasta 3 colaboradores.
GitHub Copilot es un asistente de IA basado en OpenAI Codex que ofrece autocompletado de código en tiempo real. Funciona en VS Code, JetBrains y Neovim, y admite todos los lenguajes de programación populares.
Ve a Settings → Danger Zone → Delete this repository. La eliminación es irreversible — todos los commits, Issues y Wiki se eliminarán sin posibilidad de recuperación. Asegúrate de tener una copia de seguridad de antemano.
Resumen
Desarrollaremos una aplicación móvil llave en mano
IT Sectr crea aplicaciones para iOS y Android para startups y empresas desde 2017. Le asesoraremos y le propondremos la mejor solución.
Lea también