¿Qué es el control de versiones?

Lectura
15 min~10 min lectura

¿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.

CONCEPTO CLAVE

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,补丁 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
📌 Nota importante: Git es un sistema distribuido. Esto significa que cada persona que trabaja en el proyecto tiene una copia completa de todo el repositorio, incluyendo toda la historia de cambios. Si el servidor se cae, no pierdes nada porque todos tienen una copia completa en sus computadoras.

¿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:

  1. Velocidad: Cada operación local es instantánea. No necesitas conexión a internet para commitear, ver historial o hacer diffs.
  2. Simplicidad en el diseño: El modelo de datos es elegante y fácil de entender.
  3. Desarrollo no lineal: Soporte completo para ramificaciones y fusiones (branches y merges).
  4. Completamente distribuido: Cada clon es un respaldo completo del proyecto.
  5. Escalabilidad: Puede manejar proyectos del tamaño del kernel de Linux con millones de archivos y miles de contribuidores.
💡 Consejo práctico: Git y GitHub NO son lo mismo. Git es la herramienta (software de control de versiones), mientras que GitHub es una plataforma web que aloja repositorios Git en la nube. Más adelante en el curso veremos GitHub en detalle, pero por ahora recuerda: Git es lo que instalas en tu computadora, GitHub es uno de los lugares donde puedes almacenar tu código.

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.
CONCEPTO CLAVE

El flujo de trabajo básico en Git es:
  1. Modificas archivos en tu directorio de trabajo
  2. Preparas los cambios (staging)
  3. Confirmas esos cambios como un commit en tu historial
  4. 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

  1. Descarga Git desde git-scm.com
  2. Ejecuta el instalador y sigue los pasos. Las opciones por defecto son seguras para la mayoría de usuarios.
  3. Después de instalar, abre Git Bash (se habrá instalado) para verificar que todo funciona.

macOS

  1. Abre la Terminal
  2. Escribe git --version
  3. Si no está instalado, macOS te提示ará instalar las herramientas de desarrollo. También puedes instalarlo con Homebrew: brew install git

Linux (Ubuntu/Debian)

  1. Abre la Terminal
  2. Ejecuta: sudo apt update && sudo apt install git
  3. Verifica la instalación con git --version
⚠️ Advertencia: Asegúrate de que la versión instalada sea reciente (al menos 2.30 o superior). Las versiones muy antiguas pueden tener funciones limitadas o comportamientos diferentes a los que mostraremos en este curso.

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 "[email protected]"

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.

💡 Consejo profesional: La opción --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.

  1. Crea una carpeta nueva: mkdir mi-primer-proyecto y entra en ella: cd mi-primer-proyecto
  2. Inicializa el repositorio: git init
  3. Crea un archivo: echo "Hola Mundo" > archivo.txt
  4. Verifica el estado: git status
  5. Agrega el archivo al staging: git add archivo.txt
  6. Haz tu primer commit: git commit -m "Mi primer commit: archivo inicial"
  7. Verifica el historial: git log
📌 Resultado esperado: Al ejecutar 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.
CONCEPTO CLAVE

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.
🧠 Quiz: Control de Versiones

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
Respuesta correcta: B
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
Respuesta correcta: B
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
Respuesta correcta: C
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
📌 Próximo paso: En la siguiente lección, profundizaremos en los comandos básicos de Git que usarás a diario. Practica creando repositorios, haciendo commits, y explorando el historial. La repetición de estos comandos básicos construirá tu intuición para cuando trabajemos con ramas y colaboración.
"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."
💡 Antes de continuar: Asegúrate de haber completado todos los pasos de instalación y haber hecho tu primer commit exitosamente. Si encontraste algún error, no te preocupes. Los mensajes de error de Git son específicos y te ayudan a identificar el problema. Puedes intentar de nuevo o buscar el mensaje exacto en internet.