CURSO BREVE · GIT & GITHUB

Control de Versiones
para Análisis de Datos

Lleva estructura, transparencia y control a tu flujo de trabajo de investigación con Git y GitHub. Aprende el flujo esencial y empieza a aplicarlo en proyectos reales de inmediato.

Ver en GitHub
Entender control de versiones Flujo commit · push · pull Crear y clonar repositorios Ramas y pull requests GitHub Desktop + Terminal Buenas prácticas reproducibles
INTRO

Bienvenido al Curso

7 módulos · Git & GitHub · Español

Git te ayuda a rastrear cambios, evitar pérdidas de trabajo y colaborar de forma más efectiva. En este curso breve aprenderás el flujo de trabajo central de Git y GitHub, y cómo empezar a aplicarlo a proyectos reales de análisis de datos de inmediato.

Se te anima a traer un proyecto que te gustaría empezar a organizar con control de versiones.


MOD 01

¿Qué es el Control de Versiones?

El problema que resuelve, Git, GitHub y cuándo usarlo

El problema que resuelve

¿Alguna vez has tenido archivos como estos en tu carpeta?

CARPETA DEL PROYECTO
analisis_final.R
analisis_final_v2.R
analisis_final_ESTE_SÍ.R
analisis_DEFINITIVO_revisado_2.R
analisis_para_entregar_CORRECTO_FINAL.R

El control de versiones elimina este caos. Con Git, cada cambio queda registrado automáticamente con fecha, autor y descripción. Puedes volver a cualquier versión anterior en cualquier momento.

¿Qué es Git?

Git es un sistema de control de versiones distribuido, creado por Linus Torvalds en 2005. Funciona localmente en tu computadora y lleva un historial completo de todos los cambios de tu proyecto.

Conceptos clave de Git

Repositorio (repo): carpeta del proyecto con todo su historial de cambios.

Commit: una "foto" del estado del proyecto en un momento dado.

Branch (rama): una versión paralela para trabajar sin afectar la principal.

Merge: combinar los cambios de una rama con otra.

¿Qué es GitHub?

GitHub es una plataforma en la nube que aloja repositorios Git. Agrega herramientas de colaboración: revisión de código, seguimiento de tareas, documentación y más.

Git vs. GitHub — La diferencia clave

Git: la herramienta local que gestiona el historial de cambios.

GitHub: el servicio en línea que almacena y comparte tu repositorio.

Analogía: Git es como el sistema de guardado; GitHub es la nube donde sincronizas.

¿Cuándo usar control de versiones?

  • Proyectos de análisis de datos con código (R, Python, SQL, etc.)
  • Documentos técnicos que evolucionan con el tiempo
  • Proyectos colaborativos con más de una persona
  • Cualquier trabajo que quieras reproducir o auditar en el futuro

MOD 02

Configuración Inicial

Instalación, identidad en Git y autenticación con GitHub

Instalación

Antes de empezar necesitas instalar Git y crear una cuenta en GitHub.

  1. Descarga Git desde: https://git-scm.com/downloads
  2. Crea una cuenta gratuita en: https://github.com
  3. Descarga GitHub Desktop desde: https://desktop.github.com

Configuración básica (Terminal)

Abre la terminal (o Git Bash en Windows) y configura tu identidad. Solo necesitas hacer esto una vez:

TERMINAL
# Configura tu nombre y correo globalmente
git config --global user.name  "Tu Nombre"
git config --global user.email "tu@email.com"

# Verifica la configuración
git config --list

Autenticación con GitHub

La forma más sencilla es usar GitHub Desktop, que maneja la autenticación automáticamente al iniciar sesión. Si prefieres la terminal:

  • Crea un token de acceso personal en: GitHub → Settings → Developer settings → Personal access tokens
  • Usa ese token como contraseña cuando Git lo solicite en la terminal.
Nunca compartas tu token

Trata tu token de acceso personal como una contraseña. Nunca lo incluyas en el código ni lo subas a un repositorio público.


MOD 03

El Flujo de Trabajo Esencial

commit · push · pull — el ciclo que usarás todos los días

El ciclo básico de Git se resume en tres acciones: modificar archivos, registrar los cambios (commit) y sincronizar con GitHub (push/pull).

Referencia de comandos esenciales

Comando ¿Qué hace?
git addSelecciona los archivos que quieres incluir en el próximo commit
git commitGuarda una "foto" de los cambios con un mensaje descriptivo
git pushSube los commits locales a GitHub (repositorio remoto)
git pullDescarga y aplica los cambios del repositorio remoto
git statusMuestra el estado actual: qué ha cambiado y qué está listo para commit
git logMuestra el historial de commits

Ejemplo práctico paso a paso

Supón que modificaste tu script de análisis. Así registrarías los cambios:

TERMINAL
# 1. Ver qué archivos cambiaron
git status

# 2. Agregar archivos específicos al staging area
git add analisis.R

# 2b. O agregar TODOS los cambios de una vez
git add .

# 3. Crear el commit con un mensaje claro
git commit -m "Agrego limpieza de valores nulos en columna edad"

# 4. Subir a GitHub
git push origin main
Regla de oro para los mensajes de commit

Usa el imperativo presente: "Agrego", "Corrijo", "Actualizo" — no "Agregué" o "Se actualizó".

Sé específico: "Corrijo error en cálculo de media por grupo" es mejor que "fix bug".

Mantén el mensaje en menos de 72 caracteres.

Las tres zonas de Git

  • Directorio de trabajo: donde editas tus archivos normalmente.
  • Staging area (índice): zona de preparación donde seleccionas qué cambios incluir.
  • Repositorio local: historial permanente de commits guardados en .git/

MOD 04

Repositorios — Crear, Clonar y Gestionar

.gitignore, README y estructura del proyecto

Crear un nuevo repositorio

Opción A — Desde GitHub (recomendado para empezar)

  1. Ve a github.com y haz clic en New repository
  2. Asigna un nombre descriptivo (ej: analisis-encuesta-2024)
  3. Agrega una descripción breve
  4. Elige visibilidad: Public o Private
  5. Marca Add a README file
  6. Haz clic en Create repository
  7. Clona el repositorio a tu computadora (ver sección siguiente)

Opción B — Desde tu carpeta local (terminal)

TERMINAL
# Navega a la carpeta del proyecto
cd mi-proyecto

# Inicializa el repositorio Git
git init

# Conecta con un repositorio remoto en GitHub
git remote add origin https://github.com/tuusuario/mi-proyecto.git

Clonar un repositorio existente

Clonar crea una copia local completa (con todo el historial) de un repositorio remoto:

TERMINAL
git clone https://github.com/tuusuario/nombre-repo.git

Con GitHub Desktop: File → Clone repository → pega la URL o busca entre tus repos.

El archivo .gitignore

Le dice a Git qué archivos no debe rastrear. Es esencial para proyectos de datos para excluir datos crudos, credenciales y archivos temporales.

.GITIGNORE — PROYECTO DE DATOS
# Datos crudos y archivos grandes
*.csv
*.xlsx
data/raw/

# Credenciales y configuración local
.env
config_local.R

# Archivos temporales del sistema
__pycache__/
.Rhistory
.DS_Store
*.log
¿Qué sí versionar en proyectos de datos?

SÍ: scripts de código (.R, .py, .sql), documentación (.md), resultados resumidos, figuras generadas.

NO: datos crudos pesados, datos sensibles o privados, archivos temporales del sistema.

Considera usar DVC (Data Version Control) para versionar datasets grandes.

El archivo README.md

El README es la primera página de tu repositorio. Un buen README incluye:

  • Nombre y descripción del proyecto
  • Objetivo del análisis
  • Estructura de carpetas
  • Instrucciones de instalación y uso
  • Fuentes de datos utilizadas
  • Nombre del autor y fecha

MOD 05

Colaboración — Ramas, Pull Requests y Conflictos

El corazón de la colaboración en GitHub

¿Qué es una rama (branch)?

Una rama es una línea independiente de desarrollo. Te permite experimentar o trabajar en una nueva funcionalidad sin afectar la versión principal del proyecto (rama main).

¿Por qué usar ramas?

Trabajar en características nuevas sin romper el código que funciona.

Revisar el trabajo de un colaborador antes de integrarlo.

Mantener versiones estables del análisis mientras se experimenta.

Trabajar con ramas

TERMINAL
# Ver todas las ramas
git branch

# Crear una nueva rama
git branch nueva-funcion

# Cambiar a esa rama
git checkout nueva-funcion

# Crear y cambiar en un solo comando (forma recomendada)
git checkout -b nueva-funcion

# Volver a la rama principal
git checkout main

# Fusionar los cambios de nueva-funcion en main
git merge nueva-funcion

Pull Requests (PR)

Un Pull Request es la forma formal de proponer que tus cambios (de una rama) se integren a la rama principal. Es el núcleo de la colaboración en GitHub.

  1. Crea una rama y sube tus cambios con git push
  2. Ve a GitHub y haz clic en "Compare & pull request"
  3. Escribe una descripción clara de los cambios realizados
  4. Asigna revisores si es un proyecto colaborativo
  5. Una vez aprobado, haz clic en "Merge pull request"

Resolución de conflictos

Un conflicto ocurre cuando dos personas modifican la misma parte de un archivo y Git no puede decidir automáticamente cuál versión conservar. Git marcará los conflictos así:

ARCHIVO CON CONFLICTO
<<<<<<< HEAD
resultado <- mean(datos$edad, na.rm = TRUE)
=======
resultado <- median(datos$edad, na.rm = TRUE)
>>>>>>> rama-colaborador

Para resolver: edita el archivo manualmente dejando solo la versión correcta (o combinando ambas), luego haz git add y git commit.

Consejos para evitar conflictos

Haz git pull frecuentemente para mantenerte actualizado.

Divide el trabajo en archivos o secciones distintas con tu equipo.

Usa ramas cortas: crea, trabaja y fusiona rápido.

Comunica con tu equipo qué archivos está modificando cada quien.


MOD 06

GitHub Desktop y Línea de Comandos

GUI para empezar · Terminal para mayor control

GitHub Desktop

GitHub Desktop es la interfaz gráfica oficial de GitHub. Facilita el uso de Git sin necesidad de recordar todos los comandos. Ideal para comenzar.

AcciónEn GitHub Desktop
Clonar un repoFile → Clone Repository
Ver cambiosPanel izquierdo muestra archivos modificados
Hacer un commitEscribir mensaje y clic en "Commit to main"
Push / PullBotón "Push origin" / "Fetch origin" en la barra superior
Crear una ramaBranch → New Branch
Cambiar de ramaMenú "Current Branch" en la barra superior

Referencia rápida de comandos

A medida que te sientas más cómodo, la terminal te da más control y velocidad. Aquí los comandos que usarás con más frecuencia:

ComandoDescripción
git initInicializar repositorio en carpeta actual
git clone <url>Clonar repositorio remoto a tu computadora
git statusVer el estado actual de archivos
git add <archivo>Agregar archivo específico al staging
git add .Agregar todos los cambios al staging
git commit -m 'msg'Crear commit con mensaje descriptivo
git pushSubir commits locales a GitHub
git pullDescargar cambios de GitHub
git log --onelineHistorial resumido de commits
git diffVer diferencias no confirmadas
git branchListar ramas disponibles
git checkout -b ramaCrear y cambiar a nueva rama
git merge ramaFusionar rama en la rama actual

MOD 07

Buenas Prácticas para Proyectos de Datos

Estructura, flujo recomendado y checklist de reproducibilidad

Estructura de carpetas recomendada

Una estructura clara hace que tu repositorio sea fácil de entender para colaboradores — y para ti mismo en el futuro.

mi-proyecto/ ├── README.md # Descripción del proyecto ├── .gitignore # Archivos a ignorar ├── data/ │ ├── raw/ # Datos originales (en .gitignore) │ └── processed/ # Datos limpios y transformados ├── scripts/ # Código de análisis (.R, .py) ├── notebooks/ # Jupyter o RMarkdown ├── outputs/ │ ├── figures/ # Gráficos generados │ └── tables/ # Tablas de resultados └── docs/ # Documentación adicional

Flujo de trabajo recomendado

  1. Antes de empezar: haz git pull para obtener los cambios más recientes.
  2. Crea una rama para cada tarea o análisis nuevo.
  3. Haz commits pequeños y frecuentes con mensajes descriptivos.
  4. Al terminar: git push y crea un Pull Request para revisión.
  5. Mantén el README actualizado con cada cambio importante.

Checklist de reproducibilidad

  • El código corre de principio a fin sin intervención manual.
  • Las rutas de archivos son relativas, no absolutas.
  • Las dependencias y versiones de paquetes están documentadas (requirements.txt, renv.lock, etc.).
  • Los datos crudos están descritos aunque no estén en el repositorio.
  • Hay un script principal (main.R, run_analysis.py) que ejecuta todo el pipeline.
  • El README explica cómo reproducir el análisis desde cero.
Herramientas complementarias

renv (R): para gestionar versiones de paquetes en proyectos de R.

conda / venv (Python): para entornos virtuales reproducibles.

DVC: Data Version Control — para versionar datasets grandes con Git.

GitHub Actions: para automatizar tareas como ejecutar pruebas o generar reportes.


✓ FIN

Resumen del Curso

Lo que aprendiste · Próximos pasos

MóduloConcepto clave
01El control de versiones elimina el caos de múltiples copias de archivos.
02Configura Git con tu nombre y email; usa GitHub Desktop para comenzar fácil.
03El ciclo básico es: modificar → add → commit → push.
04Usa .gitignore para excluir datos crudos; documenta todo con README.md.
05Las ramas y Pull Requests son el corazón de la colaboración.
06GitHub Desktop para empezar; la terminal para mayor control y velocidad.
07Una buena estructura y commits frecuentes hacen tu trabajo reproducible.

Próximos pasos

  • Empieza con un proyecto real: crea un repositorio para tu análisis actual.
  • Practica hacer al menos un commit por sesión de trabajo.
  • Explora GitHub Pages para publicar reportes de análisis como sitios web.
  • Consulta el libro gratuito Pro Git en progit.org
  • Practica en los cursos interactivos de GitHub Skills en skills.github.com
🎉

¡Felicitaciones por completar el curso!

Con estas herramientas tu flujo de trabajo será más organizado, transparente y reproducible.