GitHub desde Cero

Guía completa para aprender GitHub desde fundamentos hasta conceptos avanzados.

¿Qué es GitHub?

🐙

Plataforma de Desarrollo Colaborativo

GitHub es la plataforma más popular para alojar repositorios Git, colaborar en proyectos y gestionar el ciclo de vida del desarrollo de software.

Para Qué Sirve

Alojar código, colaborar en equipo, revisar código, gestionar proyectos, automatizar workflows y construir portafolio profesional.

🔧

Características Principales

Repositorios, Pull Requests, Issues, Actions, Projects, Wikis, Pages y integración con miles de herramientas.

💡 ¿Sabías qué?

GitHub fue fundado en 2008 y adquirido por Microsoft en 2018 por $7.5 mil millones. Alberga más de 100 millones de repositorios y 100 millones de desarrolladores.

Ecosistema GitHub

GitHub ofrece un ecosistema completo para el desarrollo colaborativo de software.

Desarrolladores

Tú y tu equipo

⬇️

GitHub Platform

Repos, Issues, PRs, Actions

⬇️

CI/CD Pipeline

GitHub Actions workflows

⬇️

Deploy

GitHub Pages, Packages, Cloud

📊 Funcionalidades Core

  • Repositorios - Aloja tu código
  • Pull Requests - Revisión de código
  • Issues - Seguimiento de tareas
  • Projects - Gestión ágil

💾 Automatización

  • Actions - CI/CD nativo
  • Webhooks - Integraciones
  • API REST/GraphQL - Automatización
  • Bots - GitHub Apps

🔒 Colaboración

  • Organizaciones - Equipos
  • Code Review - Comentarios
  • Discussions - Comunidad
  • Security - Vulnerabilidades

📖 Temas del Curso

Haz clic en cualquier tema para ver el contenido detallado

🐙 Introducción a GitHub

GitHub es la plataforma más popular para alojar repositorios Git, colaborar en proyectos y gestionar el ciclo de vida del desarrollo de software.

Historia:

GitHub fue fundado en 2008 y adquirido por Microsoft en 2018 por $7.5 mil millones. Alberga más de 100 millones de repositorios y desarrolladores.

Características Principales:

  • Repositorios: Aloja tu código con control de versiones
  • Pull Requests: Revisión y discusión de cambios
  • Issues: Seguimiento de tareas y bugs
  • Actions: CI/CD nativo integrado
💡 ¿Sabías qué?

GitHub es la plataforma de desarrollo más grande del mundo, usada por empresas como Google, Facebook y miles de proyectos open source.

← Volver a temas

🔧 Configuración e Instalación

Instalar Git:

# Windows: Descargar desde git-scm.com
# macOS
brew install git
# Linux
sudo apt-get install git

Configurar Usuario:

git config --global user.name "Tu Nombre"
git config --global user.email "tu@email.com"

Autenticación SSH:

# Generar clave SSH
ssh-keygen -t ed25519 -C "tu@email.com"

# Agregar al agente SSH
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_ed25519

# Copiar clave pública
cat ~/.ssh/id_ed25519.pub

GitHub CLI:

# Instalar
brew install gh  # macOS
sudo apt install gh  # Linux

# Autenticar
gh auth login
← Volver a temas

📦 Conceptos Básicos

Crear Repositorio:

# Desde GitHub.com: Click en "New repository"
# O desde CLI
gh repo create mi-proyecto
cd mi-proyecto

Comandos Esenciales:

# Clonar repositorio
git clone https://github.com/usuario/repo.git

# Ver estado
git status

# Agregar y commitear
git add .
git commit -m "Mensaje descriptivo"

# Push a remoto
git push origin main

Trabajar con Branches:

# Crear y cambiar de rama
git checkout -b feature/nueva

# Push de la rama
git push -u origin feature/nueva
← Volver a temas

🔄 Pull Requests y Colaboración

Crear Pull Request:

# Desde CLI
gh pr create --title "Add nueva feature" --body "Descripción de los cambios"

# O desde github.com: Click en "New Pull Request"

Proceso de Code Review:

  • Revisar los cambios archivo por archivo
  • Dejar comentarios específicos
  • Solicitar cambios si es necesario
  • Aprobar cuando esté listo

Issues y Projects:

Usa Issues para reportar bugs y Features. Projects para gestión ágil tipo Kanban.

← Volver a temas

✅ Buenas Prácticas

README Profesional:

# Nombre del Proyecto

Descripción clara y concisa.

## Instalación
\`\`\`bash
npm install
\`\`\`

## Uso
\`\`\`bash
npm start
\`\`\`

## Licencia
MIT

.gitignore:

Excluye node_modules, .env, dist, archivos del sistema.

Licencias:

  • MIT: Permisiva, uso libre
  • Apache 2.0: Con patente
  • GPL: Copyleft, derivados deben ser open source
← Volver a temas

🚀 GitHub Actions y CI/CD

Workflow Básico:

name: CI
on: [push, pull_request]
jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - name: Setup Node.js
        uses: actions/setup-node@v3
        with:
          node-version: '18'
      - name: Install
        run: npm install
      - name: Test
        run: npm test

GitHub Pages:

Deploy automático de sitios estáticos desde una rama gh-pages.

← Volver a temas

📋 Proyecto Final

Desarrolla un proyecto completo en GitHub:

  1. Crear repositorio con README profesional
  2. Configurar .gitignore y licencia
  3. Crear branches para features
  4. Implementar CI/CD con Actions
  5. Usar Issues para tracking
  6. Deploy con GitHub Pages
💡 Proyecto sugerido:

Crea un portafolio personal con CI/CD, documentación completa y deploy automático.

← Volver a temas

🔀 Forks y Pull Requests

Trabajar con Forks:

# Forkear desde github.com
# Clonar tu fork
git clone https://github.com/tu-user/repo.git

# Agregar upstream
git remote add upstream https://github.com/original/repo.git

# Sincronizar
git fetch upstream
git merge upstream/main

Pull Requests Detallados:

# Título descriptivo
feat: agregar autenticación con JWT

# Body del PR
## Descripción
- Login con JWT
- Refresh tokens
- Logout

## Tipo de cambio
- [ ] Bug fix
- [x] New feature
- [ ] Breaking change

Mantener PR Actualizado:

git fetch upstream
git rebase upstream/main
git push --force-with-lease
← Volver a temas

🐛 Issues y Proyectos

Crear Issues:

## Formato de Issue
### Descripción
Bug encontrado en el login

### Pasos para reproducir
1. Ir a /login
2. Ingresar credenciales
3. Error en consola

### Comportamiento esperado
Redirigir al dashboard

### Labels
bug, priority: high, good first issue

GitHub Projects:

  • Tableros Kanban automáticos
  • Campos personalizados
  • Automation rules
  • Integración con Issues y PRs

Milestones:

# Cerrar issues automáticamente
closes #123
fixes #456
resolves #789
← Volver a temas

🔒 Seguridad y Gestión de Accesos

Tokens y SSH:

# Token de acceso personal (PAT)
gh auth token

# Generar nuevo token
gh auth login --with-token < token.txt

Organizations y Teams:

# Ver equipos
gh team list

# Miembros del equipo
gh team members list --team nombre

Dependabot:

# .github/dependabot.yml
version: 2
updates:
  - package-ecosystem: "npm"
    directory: "/"
    schedule:
      interval: "weekly"

Code Scanning:

GitHub Advanced Security incluye scanning de vulnerabilidades automáticamente.

← Volver a temas

📦 GitHub Packages y Releases

Releases:

# Crear release desde CLI
gh release create v1.0.0 \
  --title "Versión 1.0.0" \
  --notes "Primera versión estable"

# Release con archivos
gh release create v1.0.0 \
  --generate-notes \
  assets/mi-app.zip

GitHub Packages:

# Publicar package
npm publish

# Configurar Registry
npm config set registry https://npm.pkg.github.com

Descargar Releases:

gh release download v1.0.0 --pattern "*.exe"
← Volver a temas

🚀 GitHub Advanced Features

GitHub Actions Avanzado:

name: Deploy
on:
  push:
    branches: [main]
  workflow_dispatch:

jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - name: Deploy
        run: |
          echo "Deploying..."
          # comandos de deploy

      - name: Notify
        if: failure()
        uses: slack-send@1

Reusable Workflows:

# .github/workflows/reusable.yml
on:
  workflow_call:
    inputs:
      environment:
        required: true
        type: string

GitHub API:

gh api repos/{owner}/{repo}/issues

GitHub Codespaces:

IDE en la nube con VS Code, preconfigurado para tu proyecto.

← Volver a temas

Ejemplos de Código

Crear Repositorio

# Usando GitHub CLI
gh repo create mi-proyecto
cd mi-proyecto

# O manualmente en github.com
# Luego clonar
git clone https://github.com/usuario/mi-proyecto.git

Pull Request

# Crear rama para feature
git checkout -b feature/nueva-funcionalidad

# Hacer cambios y commit
git add .
git commit -m "Add nueva funcionalidad"

# Push y crear PR
git push origin feature/nueva-funcionalidad
gh pr create --title "Add nueva funcionalidad"

GitHub Actions

name: CI
on: [push, pull_request]
jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - name: Run tests
        run: npm test

README.md

# Mi Proyecto

Descripción del proyecto.

## Instalación
\`\`\`bash
npm install
\`\`\`

## Uso
\`\`\`bash
npm start
\`\`\`

👨‍💻 Desarrollado por Isaac Esteban Haro Torres

Ingeniero en Sistemas · Full Stack · Automatización · Data

📧 Email: zackharo1@gmail.com

📱 WhatsApp: 098805517

💻 GitHub: github.com/ieharo1

🌐 Portafolio: ieharo1.github.io/portafolio-isaac.haro/