Módulo 1: Introducción a Git — Fundamentos para un control de versiones moderno
Aprende qué es Git, qué problemas resuelve, en qué se diferencia de GitHub y GitLab, cómo instalarlo y configurarlo correctamente, y los conceptos esenciales: repositorio, commit, branch y merge.
¿Qué es Git y qué problemas resuelve?
Git es un sistema de control de versiones distribuido. Te permite registrar cambios en archivos, volver a estados anteriores, trabajar en paralelo con otras personas y unir contribuciones de forma segura. A diferencia de los sistemas centralizados, cada persona tiene una copia completa del historial del proyecto, lo que lo hace rápido, confiable y resistente a fallos.
Problemas que resuelve
- Versionado seguro sin sobrescribir archivos (adiós “final_v3_definitivo2.zip”).
- Trabajo en paralelo con ramas, evitando bloqueos entre personas.
- Auditoría completa: quién cambió qué y por qué.
- Recuperación ante errores: volver a un estado estable en segundos.
Beneficios clave
- Desarrollo seguro con experimentación aislada.
- Integración fluida de cambios con revisiones de código.
- Historial claro que impulsa la colaboración y la trazabilidad.
Diferencias entre Git, GitHub, GitLab y otros
Git es el motor de control de versiones. GitHub, GitLab o Bitbucket son plataformas que alojan repositorios Git en la nube o en tu propia infraestructura y agregan herramientas de colaboración.
Git (la herramienta)
Software de control de versiones distribuido.
- Corre localmente en tu equipo.
- No requiere internet para versionar.
- Abierto, rápido y extensible.
GitHub
Plataforma de Microsoft (SaaS y Enterprise).
- Pull Requests, Issues, Projects, Wikis.
- GitHub Actions (CI/CD), GitHub Packages.
- Amplia comunidad open source.
GitLab
Plataforma open-core (SaaS y self-managed).
- CI/CD integrado desde el núcleo.
- Gestión de seguridad y DevSecOps.
- Opción on-premise robusta.
Bitbucket
Ecosistema Atlassian (Jira/Confluence).
- Integración nativa con Jira.
- CI/CD con Pipelines.
- Repositorios privados cómodos.
Instalación y configuración inicial de Git
1) Instalar Git
winget install --id Git.Git -e --source winget
git --version
Alternativa: instalador desde https://git-scm.com
# Homebrew
brew install git
git --version
# O bien: Xcode Command Line Tools
xcode-select --install
# Debian/Ubuntu
sudo apt update && sudo apt install -y git
# Fedora
sudo dnf install -y git
# Arch
sudo pacman -S git
2) Configuración básica recomendada
Define tu identidad, rama por defecto y ajustes útiles para un historial limpio.
# Identidad (usa tu nombre y correo reales, p. ej. los de tu plataforma)
git config --global user.name "Tu Nombre"
git config --global user.email "tu.email@dominio.com"
# Rama por defecto y formato de diffs
git config --global init.defaultBranch main
git config --global color.ui auto
# Opcionales según SO y preferencias
# Windows: normaliza fin de línea al hacer checkout
git config --global core.autocrlf true
# macOS/Linux: respeta LF
git config --global core.autocrlf input
# Estrategia de pull (merge por defecto)
git config --global pull.rebase false
# Almacenamiento de credenciales
# Windows:
git config --global credential.helper manager-core
# macOS:
git config --global credential.helper osxkeychain
# Linux (simple):
git config --global credential.helper store
3) Claves SSH (opcional pero recomendado)
Evita escribir tu contraseña al interactuar con repositorios remotos.
# Genera una clave moderna
ssh-keygen -t ed25519 -C "tu.email@dominio.com"
# Inicia el agente y añade la clave
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_ed25519
# Copia la clave pública y pégala en GitHub/GitLab/Bitbucket
cat ~/.ssh/id_ed25519.pub
Conceptos clave: repositorio, commit, branch, merge
Es la estructura donde Git guarda tu proyecto y su historial.
# Crear repositorio local
mkdir mi-proyecto && cd mi-proyecto
git init
Puede ser local o remoto (en GitHub/GitLab, etc.).
Un “snapshot” coherente del estado de tus archivos con un mensaje explicativo.
git add archivo.txt
git commit -m "Describe el cambio de forma breve y clara"
Haz commits pequeños y atómicos: una idea por commit.
Una línea de trabajo independiente para desarrollar sin afectar la rama principal.
git branch feature/login
git switch feature/login
# o en un solo paso:
git switch -c feature/login
Convención útil: feature/, fix/, chore/, refactor/…
Integra los cambios de una rama en otra. Puede ser fast-forward (lineal) o con commit de merge.
# Desde main
git switch main
git merge feature/login
Si hay conflictos, Git te pedirá resolverlos archivo por archivo.
Primeros pasos: flujo básico recomendado
- Inicializa el repositorio y realiza el primer commit.
- Crea una rama para tu tarea o funcionalidad.
- Trabaja en cambios pequeños, hace commits claros.
- Integra tus cambios mediante un merge (o Pull/Merge Request en la plataforma).
# 1) Inicializa y primer commit
mkdir demo-git && cd demo-git
git init
echo "# Demo Git" > README.md
git add README.md
git commit -m "Inicializa proyecto con README"
# 2) Crea una rama de trabajo
git switch -c feature/actualiza-readme
echo "Descripción breve." >> README.md
git add README.md
git commit -m "Agrega descripción al README"
# 3) Integra en main
git switch main
git merge feature/actualiza-readme
# 4) Conecta remoto (ejemplo GitHub vía SSH) y publica
git branch -M main
git remote add origin git@github.com:usuario/proyecto.git
git push -u origin main
Buenas prácticas
- Mensajes de commit breves en imperativo: “Agrega validación de email”.
- Una rama por tarea; elimina ramas que ya se integraron.
- Evita commitear secretos o credenciales; usa .gitignore.
Errores comunes
- Trabajar en main directamente: dificulta las revisiones.
- Commits gigantes: complican revertir y revisar.
- No sincronizar con main antes de integrar: más conflictos.
Conclusión
Con Git dominas el control de versiones moderno: trabajas seguro, colaboras mejor y ganas trazabilidad. Ya conoces qué es Git, en qué se diferencia de GitHub/GitLab, cómo instalarlo y configurarlo, y los conceptos base que usarás a diario.
Recursos recomendados:
Modulo1 GIT Introducción