1. Introducción al control de versiones

¿Qué es el control de versiones?

Marzo de 2006. Son las 2 de la mañana y estoy en tercero de Informática. Mañana por la mañana presento mi primer proyecto freelance a un cliente importante.

El único problema es...
La dichosa app está ¡rota!

Llevo 14 horas programando, así que ya no recuerdo muy bien qué he cambiado para provocar esto.

Lo único que sé es que la capa de datos de la app funcionaba ayer (¿o fue anteayer?). Ahora, en vez de precios de acciones, tengo una colección de errores en pantalla.

¿Intentaste arreglarlo?

Intenté deshacer los cambios que montaron este desastre, pero... es 2006, así que mi IDE solo puede deshacer unos 5 minutos de mi programación nocturna y bastante cutre.

Tengo la mano dormida de pulsar Ctrl+Z tantas veces. Si ahora pulso sin querer la tecla equivocada, no podré rehacer los cambios y perderé todavía más trabajo.

A menos que...

...a menos que mi PC con Windows 98 se cuelgue porque sí y corrompa antes todos los archivos abiertos.

¿Tienes alguna copia de seguridad?

Estoy desesperado. Mi única esperanza es la copia de seguridad que hice ayer... ¿o fue la semana pasada? ¿La guardé en una memoria USB? ¿O quizá en un CD?

Además, ninguna copia tiene el código reciente, así que no puedo averiguar qué cambios iniciaron el problema.

¿Qué hay en tu mesa, detrás del altavoz?

Ah, es el mismo disquete 💾 en el que guardé la copia de seguridad ayer. ¡Es un milagro!

Un momento, primero tengo que extraer el archivo comprimido del disquete.

Crucemos los dedos 🤞
C:\> unrar x B:\backup.zip C:\ Extracting... 10% Extracting... 20% Extracting... 30% Extracting... 40% Extraction error. THE ARCHIVE IS CORRUPT.
¡Ups! 😅

¡No puedo recuperar mis archivos de la copia de seguridad! ¿Puede que el imán del altavoz haya corrompido el disquete?

Pues nada. Lo tengo muy crudo.

8 horas después...

Ahora me hace gracia pensarlo, pero en aquel momento estaba hundido. Al final encontré la causa del problema en mi código y la arreglé.

Por desgracia, llegó demasiado tarde. No cumplí el plazo y perdí al cliente. Pero aprendí la lección por las malas.

¿Y cuál fue?
Tengo que tomarme en serio el seguimiento de cambios en mi código.

Un

es un programa que registra los cambios en los archivos a lo largo del tiempo. Puedes restaurar una versión anterior, devolver un archivo o todo el proyecto a un estado previo, comparar la versión actual con otra más antigua, ver quién introdujo cambios y cuándo, y mucho más.

Hoy puedes ver el control de versiones integrado de forma casi invisible en muchas apps. Por ejemplo, cuando editas un documento en Google Docs, puedes ver el historial de cambios y restaurar el documento a una versión anterior. Pasa lo mismo con los archivos en Dropbox y en muchos otros servicios. En estas apps, el versionado ocurre automáticamente y no tienes que pensar en ello.

Pero también existen sistemas de control de versiones independientes, como Git, Mercurial o Subversion, donde tienes un control más explícito y granular sobre el proceso de versionado.

Estos sistemas son especialmente útiles en proyectos complejos, como software, sitios web o conjuntos de datos. Los proyectos grandes tienen muchas piezas que dependen unas de otras. A menudo, el código solo funciona con versiones concretas de bibliotecas u otros componentes, y actualizar una parte puede romper el resto. Ahí es donde los sistemas de control de versiones brillan de verdad.

Siguiente paso
¿Quieres probar el modo historia?

Haz el curso como estaba pensado: progreso en pequeñas dosis, un orden lineal y sin distracciones, y entradas de Gitopedia que se desbloquean poco a poco. Continúa con Git real en VS Code/Cursor/Antigravity/Windsurf cuando quieras.

Modo historia
GRATIS
pero requiere iniciar sesión