Logo

Mi Blog con Emacs y Esteroides

Emacs, IA y Linux: Poder y Simplicidad en tu Flujo de Trabajo

mybloggingnotes@gmail.com


19/04/2025

Guía de GitHub con Git: Creación, Desarrollo, Uso y Ejemplo Práctico

Introducción

GitHub es la plataforma líder para colaboración y control de versiones, pero su núcleo es Git, un sistema distribuido de control de versiones que permite gestionar cambios en el código de manera eficiente. Este post combina una introducción a Git con una guía completa sobre GitHub, cubriendo la creación de repositorios, desarrollo de proyectos, uso de funcionalidades avanzadas y un ejemplo práctico. Aprenderás a usar Git para versionar tu código y GitHub para colaborar, automatizar y publicar proyectos.

¿Qué es Git?

Git es un sistema de control de versiones distribuido, creado por Linus Torvalds en 2005, que permite:

  • Rastrear cambios: Registra modificaciones en archivos, permitiendo revertir o comparar versiones.
  • Trabajo distribuido: Cada desarrollador tiene una copia completa del repositorio, incluyendo su historial.
  • Ramificación: Crea ramas para desarrollar funciones en paralelo sin afectar la rama principal.
  • Colaboración: Facilita la fusión de cambios de múltiples colaboradores.

Conceptos clave de Git:

  • Repositorio: Carpeta que contiene el proyecto y su historial de cambios.
  • Commit: Instantánea de los cambios en un momento específico.
  • Rama (branch): Línea de desarrollo independiente (por ejemplo, main o feature/xxx).
  • Merge: Combina cambios de una rama a otra.
  • Remote: Repositorio alojado en un servidor (como GitHub).

Git es la base de GitHub, que añade herramientas de colaboración, interfaz web y automatización sobre los repositorios Git.

¿Qué es GitHub?

GitHub es un servicio en la nube que hospeda repositorios Git, ofreciendo:

  • Control de versiones con Git.
  • Colaboración mediante issues, pull requests y revisiones de código.
  • Automatización con GitHub Actions.
  • Hospedaje de sitios web con GitHub Pages.
  • Gestión de proyectos con tableros y wikis.

Fundada en 2008 y adquirida por Microsoft en 2018, GitHub es esencial para desarrolladores, con millones de usuarios y repositorios.

Diagrama PlantUML: Referencias y Flujo de Git

El siguiente diagrama combina una vista estructural (repositorio con commits, ramas, tags y HEAD) y un flujo de trabajo típico (commit, branch, merge).

funciones-git-github.png

Requisitos

Instalación y configuración de Git

  1. Instala Git:
    • En Linux:

      sudo apt-get install git  # Debian/Ubuntu
      sudo dnf install git      # Fedora
      
    • En macOS: brew install git.
    • En Windows: Descarga el instalador desde https://git-scm.com/.
  2. Configura tu identidad:

    git config --global user.name "Tu Nombre"
    git config --global user.email "tu.email@ejemplo.com"
    
  3. Verifica la instalación:

    git --version
    

Creación de un repositorio en GitHub

Sigue estos pasos para crear un repositorio y conectarlo con Git localmente:

  1. Inicia sesión en GitHub:
  2. Crea un nuevo repositorio:
    • Haz clic en New (o + > New repository).
    • Configura:
      • Repository name: Por ejemplo, mi-proyecto.
      • Description (opcional): Breve descripción.
      • Public/Private: Público o privado.
      • Initialize this repository with a README: Marca esta opción.
      • Añade un .gitignore (por ejemplo, Python) y una licencia (por ejemplo, MIT).
    • Haz clic en Create repository.
  3. Clona el repositorio localmente:
    • Copia la URL (por ejemplo, https://github.com/tu-usuario/mi-proyecto.git).
    • Ejecuta:

      git clone https://github.com/tu-usuario/mi-proyecto.git
      cd mi-proyecto
      

Desarrollo con Git y GitHub

El desarrollo combina comandos Git para versionado local con GitHub para colaboración remota.

  1. Crea una rama:
    • Evita modificar main directamente:

      git checkout -b feature/nueva-funcionalidad
      
  2. Realiza cambios y commits:
    • Edita archivos (por ejemplo, crea un index.html).
    • Añade y commitea:

      git add .
      git commit -m "Añade página principal"
      
  3. Sube cambios a GitHub:
    • Envía la rama al remoto:

      git push origin feature/nueva-funcionalidad
      
  4. Crea un Pull Request (PR):
    • En GitHub, selecciona la rama feature/nueva-funcionalidad.
    • Haz clic en Compare & pull request.
    • Añade una descripción y crea el PR.
    • Revisa y fusiona a main con Merge pull request.
  5. Sincroniza localmente:
    • Cambia a main y actualiza:

      git checkout main
      git pull origin main
      

Uso de funcionalidades clave de GitHub

GitHub extiende Git con herramientas de colaboración y automatización:

  1. Issues:
    • Reporta errores o planifica tareas en Issues > New issue.
    • Ejemplo: "Arreglar error en login (#1)" con etiqueta bug.
  2. GitHub Actions:
    • Automatiza pruebas o despliegues. Crea .github/workflows/ci.yml:

      name: CI
      on: [push]
      jobs:
        test:
          runs-on: ubuntu-latest
          steps:
            - uses: actions/checkout@v3
            - name: Set up Python
              uses: actions/setup-python@v4
              with:
                python-version: '3.9'
            - name: Run tests
              run: echo "Ejecutando pruebas..."
      
    • Git registra los cambios en el archivo y GitHub ejecuta el flujo.
  3. GitHub Pages:
    • Hospeda sitios estáticos en Settings > Pages, seleccionando main y / (root).
    • Ejemplo: Sube index.html y accede en https://tu-usuario.github.io/mi-proyecto.
  4. Colaboración:
    • Invita colaboradores en Settings > Collaborators.
    • Usa Projects para tableros Kanban.

Ejemplo práctico: Proyecto web con Git y GitHub

Crearemos una página web estática, la versionaremos con Git y la publicaremos en GitHub Pages.

  1. Crea el repositorio:
    • Nombre: mi-pagina-web.
    • Público, con README, .gitignore (HTML), licencia MIT.
  2. Clona y configura:

    git clone https://github.com/tu-usuario/mi-pagina-web.git
    cd mi-pagina-web
    
  3. Crea index.html:

    <!DOCTYPE html>
    <html>
    <head>
        <title>Mi Página Web</title>
    </head>
    <body>
        <h1>Bienvenido a mi sitio</h1>
        <p>Este es un ejemplo para GitHub.</p>
    </body>
    </html>
    
  4. Commitea y sube:

    git add index.html
    git commit -m "Añade página inicial"
    git push origin main
    
  5. Habilita GitHub Pages:
    • En Settings > Pages, selecciona main y / (root).
    • Accede a https://tu-usuario.github.io/mi-pagina-web tras unos minutos.
  6. Añade mejoras en una rama:

    git checkout -b feature/estilos
    
    • Crea styles.css:

      body {
          font-family: Arial, sans-serif;
          text-align: center;
      }
      h1 {
          color: navy;
      }
      
    • Actualiza index.html:

      <head>
          <title>Mi Página Web</title>
          <link rel="stylesheet" href="styles.css">
      </head>
      
    • Commitea y sube:

      git add .
      git commit -m "Añade estilos CSS"
      git push origin feature/estilos
      
  7. Crea y fusiona un Pull Request:
    • En GitHub, crea un PR para feature/estilos.
    • Fusiona a main y verifica la página actualizada.
  8. Sincroniza localmente:

    git checkout main
    git pull origin main
    

Consejos avanzados

  • Claves SSH para Git:

    ssh-keygen -t ed25519 -C "tu.email@ejemplo.com"
    git remote set-url origin git@github.com:tu-usuario/mi-proyecto.git
    
  • GitHub CLI:

    gh repo create mi-proyecto --public
    
  • Git rebase: Resuelve conflictos complejos:

    git rebase main
    
  • Wikis: Documenta tu proyecto en la pestaña Wiki.
  • Integraciones: Conecta con Slack, Jira o CI/CD.

Lista de comandos Git

A continuación, una lista organizada de comandos Git esenciales:

Inicialización y configuración

git init                   # Inicia un nuevo repositorio
git clone <url>            # Clona un repositorio remoto
git config --global user.name "Nombre"  # Configura nombre
git config --global user.email "email"  # Configura email

Gestión de cambios

git add <archivo>          # Añade archivo al staging
git add .                  # Añade todos los cambios
git commit -m "Mensaje"    # Crea un commit
git status                 # Muestra estado del repositorio
git diff                   # Muestra diferencias no confirmadas

Ramas y referencias

git branch                 # Lista ramas
git branch <nombre>        # Crea una rama
git checkout <rama>        # Cambia a una rama
git checkout -b <rama>     # Crea y cambia a una rama
git merge <rama>           # Fusiona rama en la actual
git tag <nombre>           # Crea un tag

Interacción con remotos

git remote add origin <url>  # Añade un remoto
git push origin <rama>       # Sube rama al remoto
git pull origin <rama>       # Descarga y fusiona cambios
git fetch origin             # Descarga cambios sin fusionar

Inspección y comparación

git log                    # Muestra historial de commits
git log --oneline --graph  # Historial compacto con ramas
git show <commit>          # Detalles de un commit
git blame <archivo>        # Muestra autor por línea

Corrección de errores

git reset <archivo>        # Quita archivo del staging
git reset --hard <commit>  # Revierte al commit
git revert <commit>         # Crea un commit que deshace cambios
git rebase <rama>          # Reorganiza historial

Ejemplo práctico

  1. Crea un repositorio:

    mkdir mi-proyecto
    cd mi-proyecto
    git init
    
  2. Añade un archivo y commitea:

    echo "# Mi Proyecto" > README.md
    git add README.md
    git commit -m "Initial commit"
    
  3. Crea una rama y un tag:

    git checkout -b feature/nueva
    echo "Nueva función" >> feature.txt
    git add feature.txt
    git commit -m "Añade feature"
    git tag v1.0
    
  4. Fusiona y sube a GitHub:

    git checkout main
    git merge feature/nueva
    git remote add origin https://github.com/tu-usuario/mi-proyecto.git
    git push origin main
    git push origin v1.0
    

Conclusión

Git proporciona el control de versiones robusto que GitHub potencia con colaboración, automatización y publicación. Este post te ha guiado desde los fundamentos de Git hasta la creación de un proyecto en GitHub, incluyendo un ejemplo práctico de una página web. Con estas herramientas, puedes gestionar proyectos de cualquier escala. ¡Crea tu próximo repositorio y explora el potencial de Git y GitHub!

"Git versiona tu código; GitHub conecta tus ideas con el mundo." — Anónimo

Categoría: Git GitHub versionado colaboración desarrollo tutoriales

Suscribirse al Feed RSS | Mapa del Sitio

© 2025 M.Castillo | Hecho con ❤️ en Emacs y org-static-blog

📊 Estadísticas Visit counter For Websites