Notification texts go here Contact Us Buy Now!

Curso Completo de GitHub: De principiante a experto

Domina GitHub desde sus fundamentos hasta técnicas avanzadas. Aprende control de versiones, colaboración en equipo y automatización con GitHub Actions
jesanre

Aprende a dominar GitHub y Git desde lo más básico hasta técnicas avanzadas para mejorar tu flujo de trabajo de desarrollo.

1. Introducción a GitHub

1.1 ¿Qué es GitHub?

GitHub es una plataforma de desarrollo colaborativo basada en Git que permite alojar y revisar código, gestionar proyectos y construir software junto a otros desarrolladores. Fue adquirida por Microsoft en 2018 y se ha convertido en el mayor repositorio de código fuente del mundo.

1.2 ¿Por qué usar GitHub?

  • Control de versiones: Rastrea y registra cambios en el código
  • Colaboración: Facilita el trabajo en equipo
  • Visibilidad: Muestra tu trabajo a la comunidad
  • Portafolio: Sirve como currículum para desarrolladores
  • Comunidad: Acceso a millones de proyectos open source

1.3 Git vs GitHub

Git: Sistema de control de versiones distribuido para rastrear cambios en archivos

GitHub: Plataforma en la nube que utiliza Git y añade funcionalidades como issues, pull requests, acciones automatizadas, etc.

2. Primeros pasos con GitHub

2.1 Crear una cuenta en GitHub

  1. Visita github.com
  2. Haz clic en "Sign up" y sigue las instrucciones
  3. Verifica tu dirección de correo electrónico
  4. Configura tu perfil con foto, biografía y otra información relevante

2.2 Instalar Git

  • Windows: Descargar el instalador desde git-scm.com
  • macOS:
    • Usando Homebrew: brew install git
    • Descargar desde git-scm.com
  • Linux:
    • Ubuntu/Debian: sudo apt-get install git
    • Fedora: sudo dnf install git

2.3 Configuración inicial de Git

# Configurar nombre de usuario

git config --global user.name "Tu Nombre"

# Configurar email

git config --global user.email "tu.email@ejemplo.com"

# Verificar la configuración

git config --list

2.4 Autenticación en GitHub

Configurar credenciales con SSH o token de acceso personal

Proceso de configuración de SSH:

# Generar clave SSH

ssh-keygen -t ed25519 -C "tu.email@ejemplo.com"

# Iniciar el agente SSH

eval "$(ssh-agent -s)"

# Añadir clave privada al agente

ssh-add ~/.ssh/id_ed25519

# Copiar la clave pública y añadirla a GitHub

cat ~/.ssh/id_ed25519.pub

3. Fundamentos de Git

3.1 Conceptos básicos

  • Repositorio: Colección de archivos y su historial de cambios
  • Commit: Punto de guardado en el historial de cambios
  • Branch (Rama): Línea de desarrollo independiente
  • Merge: Combinar cambios de una rama a otra
  • Clone: Copiar un repositorio remoto a tu máquina local
  • Pull: Obtener cambios desde un repositorio remoto
  • Push: Enviar cambios a un repositorio remoto

Un commit es como una "fotografía" del estado de tu proyecto en un momento determinado. Cada commit tiene un identificador único (hash) y lleva asociado un mensaje descriptivo.

3.2 Inicializar un repositorio

# Crear un nuevo repositorio

git init

# Clonar un repositorio existente

git clone https://github.com/usuario/repositorio.git

3.3 Flujo de trabajo básico

# Verificar estado del repositorio

git status

# Añadir archivos al área de preparación

git add archivo.txt    # Añadir un archivo específico

git add .              # Añadir todos los archivos

# Realizar un commit

git commit -m "Mensaje descriptivo del cambio"

# Ver el historial de commits

git log

3.4 Sincronizar con GitHub

# Añadir un repositorio remoto

git remote add origin https://github.com/usuario/repositorio.git

# Enviar cambios al repositorio remoto

git push -u origin main

# Obtener cambios del repositorio remoto

git pull origin main

4. Trabajando con repositorios

4.1 Crear un repositorio en GitHub

  1. Inicia sesión en GitHub y haz clic en "+" en la esquina superior derecha
  2. Selecciona "New repository"
  3. Completa los campos requeridos:
    • Nombre del repositorio
    • Descripción (opcional)
    • Visibilidad (público o privado)
    • Opciones de inicialización (README, .gitignore, licencia)
  4. Haz clic en "Create repository"

4.2 Estructura de un repositorio

  • README.md: Descripción y documentación del proyecto
  • .gitignore: Archivos que Git debe ignorar
  • LICENSE: Licencia del proyecto
  • CONTRIBUTING.md: Guía para contribuyentes
  • CODE_OF_CONDUCT.md: Normas de comportamiento

4.3 Trabajar con archivos

# Crear un archivo

touch archivo.txt

# Editar un archivo (con tu editor preferido)

code archivo.txt  # VS Code

nano archivo.txt  # Nano

vim archivo.txt   # Vim

# Renombrar un archivo

git mv nombre_antiguo.txt nombre_nuevo.txt

# Eliminar un archivo

git rm archivo.txt

4.4 Deshacer cambios

# Descartar cambios en un archivo no añadido al área de preparación

git checkout -- archivo.txt

# Quitar un archivo del área de preparación

git reset HEAD archivo.txt

# Deshacer el último commit (mantiene los cambios)

git reset --soft HEAD~1

# Deshacer el último commit (elimina los cambios)

git reset --hard HEAD~1

# Crear un nuevo commit que revierte otro commit

git revert <hash-del-commit>

5. Ramas y flujos de trabajo

5.1 Trabajar con ramas

# Ver todas las ramas

git branch

# Crear una nueva rama

git branch nueva-rama

# Cambiarse a una rama

git checkout nueva-rama

# Crear y cambiarse a una nueva rama (atajo)

git checkout -b nueva-rama

# Eliminar una rama

git branch -d rama-a-eliminar

5.2 Fusionar ramas

# Fusionar otra rama a tu rama actual

git merge otra-rama

# Resolver conflictos manualmente cuando aparezcan

# Después de resolver, añadir y hacer commit

git add .

git commit -m "Resuelto conflicto de fusión"

5.3 Flujos de trabajo comunes

  • Gitflow:
    • Ramas principales: main (producción) y develop (desarrollo)
    • Ramas auxiliares: feature/, release/, hotfix/
  • GitHub Flow:
    • Una rama principal (main)
    • Ramas para nuevas características que se fusionan mediante PR
  • Trunk Based Development:
    • Desarrollo en la rama principal
    • Ramas de corta duración para características

5.4 Rebasing

# Reorganizar commits de tu rama actual sobre otra rama

git rebase otra-rama

# Modo interactivo para modificar commits

git rebase -i HEAD~3  # Para los últimos 3 commits

6. Colaboración en GitHub

6.1 Forks y Pull Requests

  1. Fork: Crea una copia personal de un repositorio
    • Botón "Fork" en la interfaz de GitHub
  2. Clone: Clona tu fork a tu máquina local
    git clone https://github.com/tu-usuario/repositorio-forkeado.git
  3. Remote: Añade el repositorio original como "upstream"
    git remote add upstream https://github.com/usuario-original/repositorio-original.git
  4. Trabajo: Crea una rama, haz cambios y commits
  5. Push: Envía la rama a tu fork
    git push origin mi-nueva-caracteristica
  6. Pull Request: Crea una PR desde la interfaz de GitHub

6.2 Gestión de Pull Requests

  • Crear un PR con título y descripción claros
  • Solicitar revisiones de código
  • Responder a comentarios y realizar cambios
  • Fusionar PR cuando esté aprobado
  • Cerrar PR si ya no es necesario

6.3 Issues y proyectos

  • Issues: Para reportar bugs, solicitar características o discutir ideas
    • Etiquetas, asignaciones, hitos
    • Plantillas de issues
  • Proyectos: Tableros Kanban para gestionar tareas
    • Automatización de flujos de trabajo
    • Diferentes vistas (tablero, tabla)

6.4 Discusiones y wikis

  • Discussions: Para preguntas, ideas y anuncios
  • Wiki: Para documentación más extensa del proyecto

9.2 Git hooks

Pre-commit: Verificar calidad del código antes de commit

Pre-push: Ejecutar pruebas antes de push

Ejemplo de pre-commit para lint:

#!/bin/bash # .git/hooks/pre-commit npm run lint

9.3 GitHub API

  • REST API para interactuar con GitHub
  • GraphQL API para consultas más eficientes
  • Autenticación con tokens

9.4 Git avanzado

  • Cherry-pick: Aplicar commits específicos
    git cherry-pick <hash-commit>
  • Stash: Guardar cambios temporalmente
    git stash # Guardar cambios git stash pop # Recuperar y eliminar stash git stash list # Listar stashes
  • Bisect: Encontrar commits problemáticos
    git bisect start git bisect bad # Commit actual es malo git bisect good <hash-commit> # Un commit anterior es bueno # Git te ayudará a encontrar el commit problemático git bisect reset # Terminar bisect

9.5 Integración con herramientas externas

  • VS Code, IntelliJ, Eclipse
  • Jira, Trello, Slack
  • Docker, Kubernetes

10. Mejores prácticas y consejos

10.1 Commits semánticos

  • Formato: tipo(ámbito): mensaje
  • Tipos comunes: feat, fix, docs, style, refactor, test, chore

10.2 Versionado semántico

  • MAJOR.MINOR.PATCH (X.Y.Z)
  • GitHub Releases para gestionar versiones

10.3 Seguridad en GitHub

  • Dependabot para actualizar dependencias
  • CodeQL para análisis de seguridad
  • Configurar permisos adecuados

10.4 Optimización del flujo de trabajo

  • Aliases de Git para comandos frecuentes
    git config --global alias.co checkout
    
    git config --global alias.br branch
    
    git config --global alias.ci commit
    
    git config --global alias.st status
    
    
  • Herramientas gráficas: GitKraken, GitHub Desktop, Sourcetree

10.5 Documentación efectiva

  • README.md completo y claro
  • Uso de badges e imágenes
  • Ejemplos de código y casos de uso
  • Guías de contribución

Recursos adicionales

Documentación oficial

Herramientas útiles

Comunidad y aprendizaje


Publicar un comentario

Cookie Consent
We serve cookies on this site to analyze traffic, remember your preferences, and optimize your experience.
Oops!
It seems there is something wrong with your internet connection. Please connect to the internet and start browsing again.
AdBlock Detected!
We have detected that you are using adblocking plugin in your browser.
The revenue we earn by the advertisements is used to manage this website, we request you to whitelist our website in your adblocking plugin.
Site is Blocked
Sorry! This site is not available in your country.