GitHub

GitHub es una de las plataformas más conocidas y utilizadas por desarrolladores, ingenieros, científicos de datos y equipos DevOps de todo el mundo. Desde proyectos personales hasta código fuente de grandes corporaciones, GitHub se ha convertido en el centro neurálgico de la colaboración basada en Git, el sistema de control de versiones más popular.

Es una plataforma para alojar repositorios de código, basada en Git. Permitiendo a los usuarios guardar versiones del código, colaborar con otros programadores, llevar seguimiento de cambios y contribuir de forma controlada. GitHub ofrece tanto funcionalidades sociales (como seguimiento de proyectos, issues o pull requests) como integraciones de CI/CD (como GitHub Actions), todo desde la nube.

Fue fundado en 2008 por Tom Preston-Werner, Chris Wanstrath, PJ Hyett y Scott Chacon con el propósito de hacer Git más accesible y visualmente entendible para los desarrolladores. Git ya existía, creado por Linus Torvalds, pero su uso era completamente desde la línea de comandos y algo complejo. GitHub trajo una interfaz gráfica web, herramientas colaborativas y comunidad abierta, lo que revolucionó la forma de compartir y gestionar código.

En 2018, Microsoft adquirió GitHub por $7.5 mil millones en acciones, asegurando su continuidad como herramienta libre para la comunidad y potenciando aún más su ecosistema.

¿Para qué sirve GitHub?

GitHub es mucho más que un simple repositorio. Estas son sus funciones más destacadas:

  • Control de versiones: manejar diferentes versiones de código de manera segura.
  • Colaboración: múltiples usuarios pueden trabajar en el mismo proyecto, con gestión de cambios y solicitudes de revisión.
  • Revisión de código: mediante pull requests e issues, se puede analizar el código antes de integrarlo.
  • Despliegue automático: con GitHub Actions, puedes ejecutar tareas como pruebas, compilación y despliegue continuo.
  • Documentación: se puede crear documentación y wikis del proyecto.
  • Seguimiento de errores y tareas: con el sistema de issues y projects, puedes llevar el flujo de trabajo como en un gestor de tareas.

Funciones principales

  • Clonar un repositorio
  • Clonar significa copiar un repositorio remoto (como el de GitHub) a tu máquina local. Esto te permite tener el código fuente completo para modificarlo, probarlo o colaborar.

    Este comando descarga el proyecto y todo su historial de versiones.
  • Crear una rama (git branch / git checkout -b)
  • Las ramas (branches) son como líneas paralelas de trabajo, perfectas para desarrollar nuevas funcionalidades sin afectar el código principal (la rama main o master).

    Esto crea una nueva rama y cambia a ella. Así puedes trabajar de forma aislada y segura.
  • Hacer commits
  • Un commit es una instantánea del código en un momento específico. Git guarda el cambio y lo etiqueta con un mensaje que lo describe.

    Primero se agregan los archivos con add.
    Luego se registra el cambio con commit.
  • Enviar cambios
  • Envía tus commits locales al repositorio remoto de GitHub.

    Es lo que hace que tu trabajo local quede disponible en la nube.
  • Recibir cambios
  • Descarga los cambios más recientes desde el repositorio remoto hacia tu máquina local.

    Esto asegura que tienes la versión más actualizada del proyecto.
  • Pull Requests
  • Cuando trabajas con ramas, GitHub permite abrir una Pull Request (PR) para proponer tus cambios al repositorio principal. Es un flujo de trabajo colaborativo: otros pueden revisar tu código, hacer comentarios, aprobar o pedir cambios antes de integrar (mergear) tus modificaciones.

  • Issues
  • Son reportes de errores, tareas o solicitudes de mejora. Funcionan como tickets de soporte o notas de planificación, y pueden vincularse con commits o PRs.

  • Fork
  • Es una copia de un repositorio en tu propia cuenta de GitHub. Muy útil cuando quieres contribuir a un proyecto externo sin tener permisos de escritura directos. Puedes hacer cambios en tu fork y luego abrir una pull request hacia el repositorio original.

  • Wikis y Documentación
  • Cada proyecto puede tener una wiki, que actúa como una documentación interna o externa del repositorio. También se pueden usar archivos README.md y CONTRIBUTING.md como punto de inicio para explicar de qué trata el proyecto o cómo contribuir.

  • Gestión de permisos y equipos
  • Puedes crear organizaciones, equipos, roles y permisos específicos. Por ejemplo, algunos usuarios pueden solo ver el código, otros pueden editarlo, y algunos más pueden aprobar cambios o gestionar automatizaciones.

Clonar significa copiar un repositorio remoto (como el de GitHub) a tu máquina local. Esto te permite tener el código fuente completo para modificarlo, probarlo o colaborar.

Plataformas

  • GitHub Web
  • La plataforma central accesible desde cualquier navegador, donde puedes gestionar tus repositorios, issues, pull requests y workflows.

  • GitHub Desktop
  • Una aplicación para Windows y macOS que simplifica el uso de Git y GitHub mediante una interfaz gráfica. Permite clonar, crear ramas, hacer commits y push/pull fácilmente sin usar la terminal.

  • GitHub Mobile
  • Aplicación para iOS y Android que permite responder a issues, revisar código y seguir proyectos estés donde estés.

  • GitHub Actions
  • Es la plataforma de automatización integrada de GitHub. Permite definir flujos de trabajo (workflows) para:

    • Ejecutar pruebas automatizadas.
    • Compilar y desplegar proyectos.
    • Realizar linting y escaneos de seguridad.
    • Integrarse con servicios como Docker, AWS, Kubernetes, etc.
  • GitHub CLI
  • Herramienta oficial de línea de comandos (gh) que permite interactuar con GitHub desde la terminal: crear issues, pull requests, revisar código y ejecutar acciones automatizadas.

  • GitHub Codespaces
  • Un entorno de desarrollo completamente en la nube, basado en VS Code, que permite editar, compilar y depurar sin necesidad de instalar nada localmente.

  • GitLab (alternativa similar)
  • GitLab es una plataforma open-source alternativa a GitHub, con funciones muy similares: repositorios, pipelines de CI/CD, control de acceso, etc. Aunque es independiente, también permite alojar proyectos Git de forma privada o pública, y tiene fuerte adopción empresarial.

Ejemplo

Cambia la política de ejecución e instala Chocolatey (gestor de paquetes en Windows):
Instala Git LFS (gestión de archivos grandes) con Chocolatey:
Inicializa Git LFS en el sistema:
Clona un repositorio remoto de GitHub:
Entra al directorio del proyecto clonado:
Rastrear archivos CSV grandes con Git LFS:
Añade el archivo .gitattributes al área de staging:
Configura el correo global de Git (requerido para commits):
Configura tu nombre de usuario global en Git:
Añade el archivo CSV al área de staging:
Realiza un commit con un mensaje personalizado:
Muestra todas las ramas locales del repositorio:
Sube tus cambios al repositorio remoto en la rama principal (main):

Github Desktop

Para descargar GitHub Desktop, solo tienes que ir al enlace oficial.

Al hacer clic en "Download for Windows" (o "macOS" si estás en un Mac), comenzará la descarga del instalador. Una vez descargado, solo debes ejecutarlo y seguir los pasos del asistente de instalación.

GitHub Desktop te permite realizar muchas de las mismas acciones que puedes hacer desde la terminal, pero de forma visual. Por ejemplo:

  • ∘ Clonar repositorios con un solo clic.
  • ∘ Crear ramas nuevas fácilmente desde el menú.
  • ∘ Ver los cambios realizados en archivos (diff).
  • ∘ Hacer commits con mensaje sin usar comandos.
  • ∘ Sincronizar con GitHub mediante push y pull con botones.
  • ∘ Resolver conflictos de merge con ayuda visual.

Aunque no reemplaza por completo el uso avanzado de Git, es excelente para usuarios que prefieren una interfaz gráfica o que están empezando. Además, se integra muy bien con editores como VS Code.

Casos de uso comunes

  • Desarrolladores open source: compartiendo proyectos públicos y colaborando con la comunidad.
  • Empresas privadas: gestionando versiones, ramas y despliegues automatizados de software.
  • Científicos de datos y ML: alojando notebooks, datasets y modelos.
  • Administradores de sistemas y DevOps: usando GitHub Actions para automatización y gestión de infraestructura como código.

Bitbucket

Bitbucket es una plataforma de gestión de repositorios de código basada en Git y Mercurial, utilizada principalmente por desarrolladores para alojar su código fuente, colaborar con equipos y automatizar el proceso de desarrollo y despliegue de software. Es muy popular en el entorno empresarial y en proyectos de desarrollo profesional, especialmente en compañías que ya utilizan otras herramientas del ecosistema Atlassian.

Fue creado originalmente en 2008 por una empresa llamada Vanity Software como una plataforma enfocada en proyectos Mercurial. En 2010, fue adquirido por Atlassian, la misma compañía que está detrás de productos como Jira, Trello y Confluence. Tras su adquisición, Bitbucket fue evolucionando para dar soporte completo a Git, el sistema de control de versiones más popular hoy en día.

Bitbucket ofrece planes gratuitos y de pago. El plan gratuito es bastante generoso para equipos pequeños: permite hasta 5 usuarios con repositorios privados ilimitados, lo que lo convierte en una excelente opción para desarrolladores independientes, estudiantes o pequeños equipos de startups. A partir de 5 usuarios, los planes de pago ofrecen más capacidad de usuarios, funcionalidades avanzadas de seguridad y almacenamiento adicional para los pipelines de CI/CD.

Características

Con Bitbucket puedes crear repositorios de código privados o públicos, colaborar con otros desarrolladores mediante pull requests, revisar código, gestionar ramas y versiones, y conectar tu flujo de trabajo con herramientas de automatización como pipelines (integración continua y entrega continua, CI/CD). También permite la integración con Jira, lo cual hace que sea una solución potente para equipos que necesitan rastrear errores, tareas y el ciclo completo de desarrollo.

Aunque GitHub es la plataforma más conocida, Bitbucket tiene ciertas ventajas que pueden ser decisivas en algunos entornos. Una de las más destacadas es su profunda integración con Jira, lo cual permite conectar commits, ramas y pull requests directamente con tareas de gestión de proyectos. Además, Bitbucket incluye Bitbucket Pipelines, una herramienta de CI/CD integrada sin necesidad de configurar un servidor externo como Jenkins. Esto permite automatizar pruebas, despliegues o compilaciones con facilidad y sin salir del entorno de Bitbucket.

Algunas características destacables son:

  • ∘ Repositorios privados ilimitados en todos los planes.
  • ∘ Control de acceso y permisos por rama, ideal para grandes equipos.
  • ∘ Integración con Slack, Trello, Jenkins y otros servicios populares.
  • ∘ Visualización de historial de commits y ramas desde la interfaz web.
  • ∘ Herramientas de revisión de código con comentarios línea por línea.
  • ∘ Soporte para Webhooks y API REST para integraciones personalizadas.
¿Cómo se usa Bitbucket?

Para comenzar a usar Bitbucket, solo necesitas una cuenta gratuita en bitbucket.org. Una vez dentro, puedes crear un repositorio nuevo e iniciar tu proyecto. Puedes clonar el repositorio en tu máquina local usando Git, subir tu código, crear ramas para nuevas funciones, hacer commits y enviar pull requests para que tu equipo revise tus cambios. Todo este flujo está diseñado para fomentar la colaboración, revisión de código y buenas prácticas en el desarrollo.

También exploraremos cómo utilizar Bitbucket Pipelines, la herramienta de CI/CD integrada que permite automatizar procesos como pruebas, compilación y despliegue directamente desde tu repositorio. A través de un tutorial práctico, aprenderás a configurar tu primer pipeline y a integrarlo en tu flujo de desarrollo. Puedes seguir el tutorial completo aquí.