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,
mainofeature/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).
Requisitos
- Cuenta en GitHub (crea una en https://github.com/signup).
- Git instalado (descarga desde https://git-scm.com/).
- Editor de texto o IDE (por ejemplo, Emacs, VS Code).
- Conocimientos básicos de terminal.
Instalación y configuración de Git
- 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/.
Configura tu identidad:
git config --global user.name "Tu Nombre" git config --global user.email "tu.email@ejemplo.com"
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:
- Inicia sesión en GitHub:
- Accede a https://github.com y haz clic en Sign in o Sign up.
- 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).
- Repository name: Por ejemplo,
- Haz clic en Create repository.
- 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
- Copia la URL (por ejemplo,
Desarrollo con Git y GitHub
El desarrollo combina comandos Git para versionado local con GitHub para colaboración remota.
- Crea una rama:
Evita modificar
maindirectamente:git checkout -b feature/nueva-funcionalidad
- 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"
- Edita archivos (por ejemplo, crea un
- Sube cambios a GitHub:
Envía la rama al remoto:
git push origin feature/nueva-funcionalidad
- 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
maincon Merge pull request.
- En GitHub, selecciona la rama
- Sincroniza localmente:
Cambia a
mainy 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:
- Issues:
- Reporta errores o planifica tareas en Issues > New issue.
- Ejemplo: "Arreglar error en login (#1)" con etiqueta
bug.
- 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.
- GitHub Pages:
- Hospeda sitios estáticos en Settings > Pages, seleccionando
mainy/ (root). - Ejemplo: Sube
index.htmly accede enhttps://tu-usuario.github.io/mi-proyecto.
- Hospeda sitios estáticos en Settings > Pages, seleccionando
- 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.
- Crea el repositorio:
- Nombre:
mi-pagina-web. - Público, con README,
.gitignore(HTML), licencia MIT.
- Nombre:
Clona y configura:
git clone https://github.com/tu-usuario/mi-pagina-web.git cd mi-pagina-webCrea
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>
Commitea y sube:
git add index.html git commit -m "Añade página inicial" git push origin main- Habilita GitHub Pages:
- En Settings > Pages, selecciona
mainy/ (root). - Accede a
https://tu-usuario.github.io/mi-pagina-webtras unos minutos.
- En Settings > Pages, selecciona
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
- Crea y fusiona un Pull Request:
- En GitHub, crea un PR para
feature/estilos. - Fusiona a
mainy verifica la página actualizada.
- En GitHub, crea un PR para
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.gitGitHub 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
Crea un repositorio:
mkdir mi-proyecto cd mi-proyecto git initAñade un archivo y commitea:
echo "# Mi Proyecto" > README.md git add README.md git commit -m "Initial commit"
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
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