Plataforma de desarrollo colaborativo construida sobre Git. Más que hosting de repositorios — es el hub central para code review, CI/CD, gestión de proyectos y colaboración open source.
GitHub es una plataforma que extiende Git con colaboración, automatización y gestión de proyectos. Fundada en 2008, adquirida por Microsoft en 2018, hoy aloja más de 200 millones de repositorios y es el estándar de facto para desarrollo open source.
Git es el motor de control de versiones. GitHub agrega:
El flujo central de colaboración:
mainmain## Descripción
Qué cambia y por qué.
## Tipo de cambio
- [ ] Bug fix
- [ ] Nueva feature
- [ ] Breaking change
- [ ] Documentación
## Testing
Cómo se probó este cambio.
## Screenshots (si aplica)| Estrategia | Resultado | Cuándo usar |
|---|---|---|
| Merge commit | Preserva todos los commits + merge commit | Historial completo importa |
| Squash and merge | Un solo commit en main | PRs con muchos commits WIP |
| Rebase and merge | Commits individuales sin merge commit | Historial lineal limpio |
CI/CD declarativo en YAML. Los workflows viven en .github/workflows/.
name: CI
on:
push:
branches: [main]
pull_request:
branches: [main]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 20
cache: 'pnpm'
- run: pnpm install
- run: pnpm test
- run: pnpm buildactions/checkout@v4)on:
push: # cualquier push
pull_request: # PRs abiertos/actualizados
schedule:
- cron: '0 0 * * *' # diario a medianoche UTC
workflow_dispatch: # manual desde UI
release:
types: [published] # cuando se publica un releaseReglas para proteger ramas críticas:
Configurar en: Settings → Branches → Add rule
gh)Interactuar con GitHub desde la terminal:
# Autenticación
gh auth login
# Repositorios
gh repo create mi-proyecto --public
gh repo clone owner/repo
gh repo fork owner/repo
# Pull Requests
gh pr create --title "feat: add login" --body "Description"
gh pr list
gh pr checkout 123
gh pr merge 123 --squash
gh pr review 123 --approve
# Issues
gh issue create --title "Bug: login fails"
gh issue list --label bug
gh issue close 456
# Actions
gh run list
gh run view 789
gh run watch 789
# Releases
gh release create v1.0.0 --generate-notes| Plataforma | Fortaleza | Consideración |
|---|---|---|
| GitHub | Ecosistema, comunidad, Actions | Propiedad de Microsoft |
| GitLab | DevOps completo, self-hosted | UI más compleja |
| Bitbucket | Integración Atlassian (Jira) | Menos comunidad open source |
| Azure DevOps | Enterprise, integración Azure | Curva de aprendizaje |
feat:, fix:, chore:, docs:.github/
├── workflows/ # GitHub Actions
├── CODEOWNERS # Asignación automática de reviewers
├── PULL_REQUEST_TEMPLATE.md
├── ISSUE_TEMPLATE/
│ ├── bug_report.md
│ └── feature_request.md
├── FUNDING.yml # Sponsors
└── dependabot.yml # Configuración Dependabot
GitHub no es solo un hosting de repositorios — es la plataforma donde convergen el código, la revisión, el CI/CD, la gestión de proyectos y la colaboración. Dominar sus capacidades nativas (Actions, branch protection, CLI) reduce la dependencia de herramientas externas y acelera el ciclo de desarrollo.
gh.Sistema de control de versiones distribuido creado por Linus Torvalds en 2005. Fundamento de todo flujo de desarrollo moderno — desde commits locales hasta colaboración global.
Plataforma de CI/CD nativa de GitHub. Workflows declarativos en YAML que automatizan build, test, deploy y cualquier tarea del ciclo de desarrollo — directamente desde el repositorio.
Modelo de branching minimalista diseñado para continuous deployment. Solo dos elementos — main y feature branches — con PRs como punto de integración y deploy inmediato tras merge.
Aplicación de prácticas de desarrollo open-source dentro de una organización, permitiendo que equipos contribuyan a proyectos de otros equipos con procesos transparentes.
Modelo de branching para Git propuesto por Vincent Driessen en 2010. Define ramas con roles fijos (main, develop, feature, release, hotfix) para gestionar releases estructurados.
Continuous Integration y Continuous Delivery/Deployment — prácticas que automatizan la integración de código, testing y entrega a producción. Fundamento de la ingeniería de software moderna.