Lección 1 de 12 · Lectura y práctica
¿Qué es el control de versiones?
¿Qué es el Control de Versiones? Bienvenido a tu primera lección en Git y GitHub para Equipos. Antes de escribir nuestra primera línea de código o crear nuestro primer repositorio, necesitamos entender un concepto fundamental que.
Del concepto a la práctica
Taller de esta lección
El control de versiones permite comparar estados, no solo guardar copias. En un catálogo de libros, una modificación puede cambiar el horario y otra corregir una descripción; registrar ambas por separado permite saber qué decisión produjo cada resultado.
Ejemplo resuelto
Estado inicial: horario.txt contiene Lunes: 09:00-17:00. Ana cambia el cierre a 18:00 y Bruno corrige el título de una sala. Son dos cambios con propósitos distintos. Si cada uno crea un commit, el historial permite revisar o revertir solo el horario.
Pruébalo
Crea una carpeta local con
horario.txtysalas.txt.Registra el estado inicial en un commit llamado
base del catálogo.Modifica únicamente el horario y confirma
actualiza cierre del lunes.Modifica únicamente el nombre de una sala y confirma
corrige nombre de sala.
Error frecuente: sobrescribir el archivo con una copia llamada final2. Corrígelo conservando un repositorio y commits pequeños; compara con git diff antes de confirmar.
Comprueba tu resultado
Ejercicio: ejecuta git log --oneline --all y demuestra que aparecen tres commits en orden. El resultado esperado es una base y dos cambios independientes; además, git show del segundo commit no debe incluir la corrección de la sala.

Mapa de prácticaLos cambios se preparan en una rama y se registran en commits pequeños. Las pruebas y la revisión del pull request comprueban el cambio antes de integrarlo. El historial permite entender qué se modificó y recuperar una versión anterior.
Ver la infografía en tamaño completo ↗Fuentes para profundizar
¿Qué es el Control de Versiones?
Bienvenido a tu primera lección en Git y GitHub para Equipos. Antes de escribir nuestra primera línea de código o crear nuestro primer repositorio, necesitamos entender un concepto fundamental que revolucionó la forma en que los desarrolladores trabajan: el control de versiones.
El control de versiones es un sistema que registra los cambios realizados en archivos a lo largo del tiempo. Permite que múltiples personas colaboren en un proyecto, recuperen versiones anteriores del código, y tracen exactamente quién hizo qué cambios y cuándo. En esencia, es como un "deshacer" extremadamente poderoso que funciona a través del tiempo y del espacio (cuando trabajas en equipo).
¿Por qué necesitamos control de versiones?
Imagina que estás trabajando en un documento importante. Haces cambios, guardas, sigues trabajando... y entonces sucede el desastre: accidentalmente borras algo crucial, tu software falla y pierdes horas de trabajo, o necesitas comparar lo que tienes ahora con una versión anterior para recordar qué cambiaste.
La mayoría de la gente resuelve esto creando carpetas con nombres como:
proyecto_final_v2_FINAL_REALMENTe_FINAL.docx
"El control de versiones no se trata de guardar archivos. Se trata de guardar la historia de tus archivos y poder navegar por ella." — Esta filosofía es la base de todo sistema de control de versiones moderno.
Pero esto no escala. Cuando trabajas en un proyecto real, puedes tener cientos de archivos, múltiples colaboradores, y necesitas saber exactamente qué cambió entre la versión del lunes y la del viernes. Aquí es donde entra el control de versiones como disciplina.
Tipos de sistemas de control de versiones
A lo largo de la historia de la informática, han existido diferentes aproximaciones al control de versiones. Comprender estas diferencias te ayudará a apreciar por qué Git se convirtió en el estándar actual.
| Tipo | Cómo funciona | Ejemplos | Ventajas | Desventajas |
|---|---|---|---|---|
| Sistemas Locales | Guardan versiones en tu computadora | RCS, parches | Simple, offline | No permite colaboración |
| Sistemas Centralizados | Un servidor tiene todas las versiones | Subversion, CVS, Team Foundation Server | Colaboración fácil, control central | Punto único de fallo, offline limitado |
| Sistemas Distribuidos | Cada usuario tiene toda la historia | Git, Mercurial, Bazaar | Sin punto único de fallo, trabajo offline completo | Curva de aprendizaje inicial |
¿Qué es Git?
Git es el sistema de control de versiones más popular del mundo. Fue creado por Linus Torvalds (sí, el mismo creador de Linux) en 2005, después de que el equipo de desarrollo del kernel de Linux perdiera acceso a su sistema de control de versiones propietario BitKeeper.
Torvalds necesitaba algo rápido, eficiente y que pudiera manejar el desarrollo distribuido de un proyecto masivo como el kernel de Linux. El resultado fue Git, que significa "persona desagradable" en inglés slang (así se autodenominaba Torvalds cuando creó el proyecto, bromeando sobre su temperamento).
Git se diseñó con estos principios fundamentales:
- Velocidad: Cada operación local es instantánea. No necesitas conexión a internet para commitear, ver historial o hacer diffs.
- Simplicidad en el diseño: El modelo de datos es elegante y fácil de entender.
- Desarrollo no lineal: Soporte completo para ramificaciones y fusiones (branches y merges).
- Completamente distribuido: Cada clon es un respaldo completo del proyecto.
- Escalabilidad: Puede manejar proyectos del tamaño del kernel de Linux con millones de archivos y miles de contribuidores.
Conceptos fundamentales de Git
Antes de usar Git, necesitamos entender algunos términos básicos que usarás constantemente:
- Repositorio: Es la carpeta donde Git hace seguimiento a todos los archivos y sus cambios. Contiene tu proyecto más toda la historia de modificaciones.
- Commit: Es una "instantánea" (snapshot) del estado de tu proyecto en un momento dado. Cada commit tiene un identificador único (hash) y un mensaje que describe qué cambios incluye.
- Branch (Rama): Es una línea independiente de desarrollo. Piensa en ella como crear una copia de tu proyecto para trabajar en una nueva funcionalidad sin afectar el código principal.
- Merge: Es fusionar los cambios de una rama a otra.
- Push: Enviar tus commits locales a un servidor remoto (como GitHub).
- Pull: Traer cambios del servidor remoto a tu computadora local.
- Clone: Descargar una copia completa de un repositorio existente.
El flujo de trabajo básico en Git es:
- Modificas archivos en tu directorio de trabajo
- Preparas los cambios (staging)
- Confirmas esos cambios como un commit en tu historial
- Opcionalmente, envías esos commits a un repositorio remoto
Instalando Git
Vamos a configurar tu entorno de trabajo. Git está disponible para Windows, macOS y Linux. Sigue estos pasos según tu sistema operativo:
Windows
- Descarga Git desde git-scm.com
- Ejecuta el instalador y sigue los pasos. Las opciones por defecto son seguras para la mayoría de usuarios.
- Después de instalar, abre Git Bash (se habrá instalado) para verificar que todo funciona.
macOS
- Abre la Terminal
- Escribe
git --version - Si no está instalado, macOS te pedirá instalar las herramientas de desarrollo. También puedes instalarlo con Homebrew:
brew install git
Linux (Ubuntu/Debian)
- Abre la Terminal
- Ejecuta:
sudo apt update && sudo apt install git - Verifica la instalación con
git --version
Configuración inicial de Git
Después de instalar Git, necesitas configurar tu identidad. Esto es importante porque cada commit que hagas incluirá esta información:
git config --global user.name "Tu Nombre"
git config --global user.email "tu@email.com"
También es recomendable configurar tu editor de texto preferido:
git config --global core.editor "code --wait"
Este comando configura Visual Studio Code como tu editor por defecto. Si prefieres otro editor, consulta la documentación de Git para su sintaxis específica.
--global significa que esta configuración se aplica a todos tus proyectos en esta computadora. Si quieres configurar un nombre diferente para un proyecto específico, ejecuta los mismos comandos sin --global dentro de ese repositorio.
Para verificar que todo quedó configurado correctamente:
git config --list
Ver más: Configuraciones avanzadas opcionales
Existen otras configuraciones útiles que puedes considerar:
git config --global init.defaultBranch main— Establece 'main' como nombre por defecto de la rama principal (en lugar de 'master', que es el antiguo estándar).git config --global pull.rebase false— Usa merge en lugar de rebase cuando haces pull (más intuitivo para principiantes).git config --global core.autocrlf input— En sistemas Unix/Mac, previene problemas con saltos de línea entre diferentes sistemas operativos.
Tu primer repositorio Git
Vamos a crear tu primer repositorio y hacer tu primer commit. Esto cementará los conceptos que hemos aprendido.
- Crea una carpeta nueva:
mkdir mi-primer-proyectoy entra en ella:cd mi-primer-proyecto - Inicializa el repositorio:
git init - Crea un archivo:
echo "Hola Mundo" > archivo.txt - Verifica el estado:
git status - Agrega el archivo al staging:
git add archivo.txt - Haz tu primer commit:
git commit -m "Mi primer commit: archivo inicial" - Verifica el historial:
git log
git status después del paso 4, deberías ver que Git detecta el nuevo archivo pero indica que no está siendo rastreado (untracked). Después de git add, el archivo pasa a estar listo para ser confirmado. El mensaje git log te mostrará tu commit con su hash, autor, fecha y mensaje.
¿Por qué aprender Git es esencial?
En el desarrollo de software moderno, Git no es opcional — es una habilidad fundamental. Aquí está el porquê:
- Colaboración: Permite que múltiples desarrolladores trabajen en el mismo proyecto sin sobrescribir el trabajo de otros.
- Historia completa: Puedes ver exactamente qué cambió, quién lo cambió, y revertir errores sin preguntar a nadie.
- Experimentación segura: Las ramas te permiten probar ideas nuevas sin riesgo para el código principal.
- Portafolio profesional: Los empleadores revisan tu perfil de GitHub para evaluar tu experiencia y estilo de trabajo.
- Integración con CI/CD: Herramientas de integración y despliegue continuo dependen de Git para automatizar builds y despliegues.
No importa si eres desarrollador, diseñador, escritor técnico o cualquiera que trabaje con archivos digitales. El control de versiones te da superpoderes sobre tu trabajo: la capacidad de viajar en el tiempo a cualquier versión anterior, comparar diferencias, y trabajar en paralelo sin conflictos.
1. ¿Cuál es la principal ventaja de un sistema de control de versiones distribuido sobre uno centralizado?
- A) Es más rápido que los centralizados
- B) Cada usuario tiene una copia completa del repositorio, eliminando puntos únicos de fallo
- C) No requiere conexión a internet
- D) Es más fácil de aprender
En un sistema distribuido, cada clon es una copia completa con todo el historial. Si el servidor central falla, no se pierde nada porque todos tienen respaldos locales. Los centralizados tienen un punto único de fallo.
2. ¿Cuál es la diferencia entre Git y GitHub?
- A) No hay diferencia, son lo mismo
- B) Git es el software de control de versiones, GitHub es una plataforma web que aloja repositorios Git
- C) GitHub es mejor que Git
- D) Git solo funciona en Windows
Git es la herramienta que instalas y usas localmente. GitHub es un servicio en la nube (entre otros como GitLab y Bitbucket) que hospeda repositorios Git y facilita la colaboración.
3. ¿Qué significa hacer un "commit" en Git?
- A) Subir cambios a internet
- B) Descargar la última versión del proyecto
- C) Guardar una instantánea del estado actual de los archivos rastreados en el historial
- D) Eliminar archivos no deseados
Un commit es como tomar una foto del estado actual de tus archivos y guardarla en el historial del repositorio. Incluye un mensaje descriptivo y un identificador único.
Resumen de la lección
En esta lección hemos cubierto:
- Qué es el control de versiones y por qué lo necesitamos
- Los tres tipos principales de sistemas de control de versiones
- Qué es Git y por qué se convirtió en el estándar de la industria
- Conceptos fundamentales: repositorio, commit, branch, merge, push, pull
- Cómo instalar y configurar Git
- Tu primer repositorio y commit
"La práctica hace al maestro. No te preocupes por cometer errores con Git — es casi imposible perder algo permanentemente cuando usas el control de versiones correctamente."
Práctica acompañada: Explica, escucha y llega a un acuerdo
Presentaciones y conversaciones de trabajo. Usa este cuaderno como práctica complementaria de la ruta; el material original de la lección continúa siendo tu referencia.
Práctica: graba y escucha una vez
Graba la explicación con tu teléfono y escúchala sin mirar la imagen. Marca frases que repiten la misma idea, palabras que no se entienden y pausas que ayudan. Después pide a alguien que resuma tu propuesta en una frase.
Prepara también una objeción: «No tenemos cinco minutos más». Responde ajustando la propuesta: «Podemos terminar la conversación cinco minutos antes». Anota lo que cambiarías y graba una segunda versión. Para practicar regulación emocional, registra la situación, la reacción y una respuesta alternativa que mantenga el objetivo de la conversación.
Comprueba tu entrega
El acuerdo debe contener una acción, un responsable y una fecha de revisión. «Mejoraremos la comunicación» no permite saber si ocurrió. «Ana enviará el resumen el mismo día y lo revisaremos el viernes» sí. Confirma que ambas partes entienden lo mismo antes de cerrar.
Sigue con Git y GitHub para Equipos
Esta lección forma parte de un curso de Cursalo. Revisa su programa y elige entre la compra individual o el acceso a toda la escuela.
Si ya tenías acceso a este curso, entra con tu cuenta: tus derechos y tu progreso se conservan. No necesitas comprarlo de nuevo.