Es una plataforma de desarrollo colaborativo para alojar proyectos de software utilizando el sistema de control de versiones Git. Lanzada en 2008, GitHub se ha convertido en uno de los repositorios de código más grandes y populares del mundo, facilitando la colaboración entre desarrolladores, la gestión de código fuente y el seguimiento de proyectos de software, tanto de código abierto como privados.
GitHub está basado en Git, un sistema de control de versiones distribuido que permite a los desarrolladores rastrear cambios en el código, revertir a versiones anteriores y trabajar en paralelo en diferentes ramas sin conflictos.
Facilita la colaboración en proyectos al permitir que múltiples desarrolladores trabajen simultáneamente en el mismo código.
Los proyectos en GitHub se almacenan en repositorios (repos), que pueden ser públicos o privados.
Los repositorios públicos son accesibles para cualquier usuario, fomentando la colaboración y contribución en proyectos de código abierto.
Los repositorios privados ofrecen control de acceso, permitiendo compartir el código solo con colaboradores específicos.
Colaboración y comunidad:
Pull requests: Permiten a los desarrolladores proponer cambios en el código que pueden ser revisados, comentados y fusionados por los mantenedores del proyecto.
Issues: Sistema de seguimiento de problemas que permite reportar bugs, solicitar nuevas funcionalidades y discutir aspectos del proyecto.
Wiki y documentación: Cada repositorio puede tener una wiki asociada para documentar el proyecto, facilitar el uso y contribuir al conocimiento colectivo.
Integraciones y automatización:
GitHub Actions: Plataforma de integración continua y entrega continua (CI/CD) que permite automatizar flujos de trabajo, como pruebas automáticas, despliegue y otras acciones personalizadas.
Integraciones con terceros: Soporta integraciones con herramientas y servicios como Travis CI, Jenkins, Slack, entre otros.
GitHub Pages:
Permite alojar sitios web estáticos directamente desde un repositorio, facilitando la publicación de documentación, blogs o páginas de proyecto.
Control de versiones y ramas:
Soporta la creación y gestión de ramas (branches), permitiendo desarrollar nuevas funcionalidades o corregir errores de manera aislada antes de fusionarlos con el código principal.