Definición:
GitHub es una plataforma para alojar repositorios, gestionar proyectos de software y colaborar mediante flujos de trabajo basados en Git. Permite almacenar archivos y su historial de cambios, revisar aportaciones, organizar tareas y automatizar procesos como pruebas, compilaciones o despliegues.
GitHub se apoya en Git, pero Git y GitHub no son lo mismo. Git es un sistema distribuido de control de versiones que puede utilizarse localmente y con distintos servicios remotos. GitHub añade alojamiento en la nube, cuentas, permisos, interfaces de revisión, gestión de proyectos y servicios integrados alrededor de los repositorios.
La plataforma se lanzó en 2008 y fue adquirida por Microsoft en 2018. Actualmente ofrece servicios para cuentas personales, organizaciones y empresas mediante planes gratuitos y de pago.
Índice de contenidos
Cómo funciona GitHub
El elemento central es el repositorio. Un repositorio reúne archivos, historial de revisiones y herramientas para gestionar el trabajo relacionado con un proyecto. Puede ser público o privado y pertenecer a una persona o a una organización.
- Commits y ramas: un commit registra un conjunto de cambios, mientras que una rama permite desarrollar o probar modificaciones sin alterar inmediatamente la rama principal.
- Clones y forks: un clone crea una copia completa del repositorio y su historial; un fork crea un repositorio relacionado desde el que se puede trabajar de forma independiente.
- Merge y remotes: un merge incorpora cambios entre ramas y un remote identifica una copia del repositorio alojada en GitHub u otro servidor.
El código no necesita crearse directamente en GitHub. Puede editarse localmente, registrarse con Git y sincronizarse después con el repositorio remoto. También puede modificarse mediante la interfaz web, GitHub Desktop, entornos de desarrollo compatibles o una API.
La documentación sobre repositorios de GitHub explica su terminología, propiedad y opciones de visibilidad.
Colaboración en GitHub
GitHub añade sobre Git herramientas para proponer, revisar y organizar cambios. Un pull request no es únicamente una solicitud automática de fusión: reúne diferencias, commits, comentarios, revisiones y comprobaciones para que el equipo pueda evaluar una modificación antes de integrarla.
- Cambios y revisiones: los pull requests permiten proponer cambios entre ramas, comentarlos, solicitar revisiones y comprobar su estado antes de fusionarlos.
- Seguimiento del trabajo: Issues, Projects y Discussions sirven para registrar errores, organizar tareas y mantener conversaciones relacionadas con el proyecto.
- Documentación: archivos README, wikis y guías de contribución explican el propósito, instalación y normas de participación del repositorio.
Los repositorios públicos facilitan la participación en proyectos de código abierto, pero publicar un repositorio no convierte automáticamente su contenido en software de código abierto. Es necesario indicar una licencia que defina los permisos de uso, modificación y distribución.
Automatización en GitHub
GitHub incorpora servicios que amplían el alojamiento y la revisión de archivos. Su disponibilidad, límites y facturación dependen del plan y del tipo de repositorio.
- Actions: ejecuta flujos definidos en el repositorio ante eventos como un commit, un pull request o una publicación, y puede utilizarse para pruebas, integración continua y despliegues.
- Pages, Packages y Releases: permiten publicar sitios estáticos, distribuir paquetes y agrupar versiones con notas y archivos descargables.
- Codespaces y Copilot: ofrecen entornos de desarrollo en la nube y funciones de asistencia mediante inteligencia artificial para escribir, comprender o revisar código.
Estas funciones no se ofrecen con las mismas condiciones en todos los planes. Algunas tienen cuotas, consumo facturable o controles reservados a determinados tipos de cuenta. Un flujo de trabajo debe revisar las condiciones vigentes y no depender de límites históricos.
Seguridad en GitHub
La visibilidad de un repositorio determina quién puede consultarlo, pero no sustituye una política de seguridad. Un repositorio privado restringe el acceso desde GitHub; no garantiza que el código, las credenciales o los datos estén protegidos en todos los sistemas conectados.
- Acceso y autenticación: los roles, permisos, equipos y métodos de autenticación delimitan las acciones disponibles para personas y aplicaciones.
- Protección de cambios: las reglas de repositorio y de ramas pueden exigir revisiones, comprobaciones o condiciones antes de aceptar modificaciones.
- Detección y auditoría: el análisis de dependencias y código, la detección de secretos y los registros de actividad ayudan a identificar determinados riesgos según el plan.
Una credencial eliminada del último commit puede seguir presente en el historial. Si se publica un secreto, debe revocarse o rotarse y después evaluarse la eliminación del dato del historial. También deben revisarse aplicaciones, acciones, dependencias y colaboradores con acceso.
Limitaciones de GitHub
GitHub centraliza numerosos procesos, pero no reemplaza las decisiones técnicas ni la gobernanza del proyecto. El equipo sigue necesitando comprender Git, resolver conflictos, diseñar permisos y revisar el código antes de integrarlo.
La disponibilidad del servicio se convierte en una dependencia y algunas funciones de Actions, Codespaces, almacenamiento o seguridad están sujetas a límites o costes. Los proyectos pueden necesitar copias locales, respaldos y procedimientos alternativos.
Las automatizaciones ejecutan código y pueden exponer secretos o modificar sistemas conectados si están mal configuradas. Del mismo modo, las sugerencias de Copilot u otros agentes pueden contener errores, vulnerabilidades o código incompatible y requieren revisión humana y pruebas.
GitHub tampoco determina la calidad del código fuente. Alojar un proyecto en la plataforma no demuestra que esté mantenido, documentado o sea seguro. Su adopción debe valorar permisos, proceso de desarrollo, requisitos legales, residencia de datos, costes y capacidad de migración.
