¿Qué es Git y para Qué Sirve? Control de Versiones Explicado
Comprende la naturaleza de Git como sistema de control de versiones distribuido, sus tres estados de trabajo (Working Directory, Staging y Repository) y cómo elimina el caos de 'proyecto_final_v2_definitivo.zip'.
Git es un sistema de control de versiones distribuido (DVCS) de código abierto diseñado por Linus Torvalds para rastrear el historial de modificaciones en archivos de texto y código fuente a lo largo del tiempo.
Permite trabajar en equipo sin sobreescribir el trabajo ajeno, viajar en el tiempo a cualquier estado anterior del proyecto ante errores y crear ramas independientes para desarrollar nuevas funcionalidades con total seguridad.
Imagina los puntos de guardado de un videojuego: antes de entrar a pelear contra un jefe difícil o probar una ruta desconocida, guardas la partida. Si tu personaje es derrotado o caes en una trampa, simplemente recargas el punto de guardado y continúas sin perder tu progreso previo. Git es ese sistema de guardado fotográfico para tu código.
Explicación Paso a Paso del Tema
Configurar la identidad del autor en Git
Establece tu nombre y correo electrónico antes de realizar cualquier cambio.
Git asocia cada confirmación (commit) con un nombre y un correo electrónico. Esto no es una contraseña, sino una firma para que el equipo y herramientas como GitHub identifiquen al autor de cada línea de código.
git config --global user.name "Tu Nombre" && git config --global user.email "tu@correo.com"
| Parámetro / Flag | Tipo / Rol | Significado y Uso |
|---|---|---|
| --global | Alcance de configuración | Aplica los valores a todos los repositorios del usuario en esa computadora (~/.gitconfig) |
| user.name | Clave de configuración | Nombre legible que aparecerá como autor en los registros de Git |
| user.email | Clave de configuración | Correo que debe coincidir con tu cuenta de GitHub o GitLab para vincular los commits |
Verifica tu configuración en cualquier momento ejecutando `git config --list --show-origin`.
Hacer commits sin configurar el correo electrónico, lo que provoca commits anónimos con identificadores de máquina local que no se vinculan al perfil de GitHub.
Comprender los 3 estados fundamentales de Git
Familiarízate con el flujo de un archivo: Modificado -> Preparado (Staged) -> Confirmado (Committed).
1. Directorio de Trabajo (Working Directory): Editas tus archivos en VS Code. Están en estado 'Modificado' pero Git no los tiene registrados para el siguiente punto de control. 2. Área de Preparación (Staging Area): Usas `git add` para poner en la balanza los cambios listos. 3. Repositorio (.git): Usas `git commit` para sellar permanentemente la instantánea en la base de datos de Git.
git status
| Parámetro / Flag | Tipo / Rol | Significado y Uso |
|---|---|---|
| git status | Comando de diagnóstico | Muestra el estado exacto de los archivos en el directorio de trabajo y el área de preparación |
Usa `git status -s` para obtener una vista condensada y limpia de dos letras que te ahorrará desplazamiento en la consola.
Creer que editar y guardar un archivo en VS Code ya lo guarda en el historial de Git. Si no haces `git add` y `git commit`, el historial no registrará nada.
Crear tu primer repositorio local
Inicializa el seguimiento en una carpeta vacía y examina el directorio oculto `.git`.
El comando `git init` crea una subcarpeta oculta llamada `.git`. Dentro de ella reside toda la base de datos de objetos, el registro de ramas, la configuración local y los punteros del historial. Si borras esa carpeta `.git`, el proyecto volverá a ser una carpeta ordinaria sin historial.
mkdir mi-proyecto && cd mi-proyecto && git init && ls -la
| Parámetro / Flag | Tipo / Rol | Significado y Uso |
|---|---|---|
| git init | Inicializador | Crea el esqueleto interno de control de versiones en el directorio actual |
| .git/ | Directorio de base de datos | Contiene los objetos blobs, trees, commits y referencias HEAD del repositorio |
Configura la rama inicial por defecto en 'main' mediante `git config --global init.defaultBranch main`.
Ejecutar `git init` por error en la carpeta de inicio del usuario (como C:\Users\Usuario o /home/usuario), convirtiendo todo el disco duro en un repositorio accidental.
Casos Prácticos Reales en Producción
Situaciones de ingeniería reales sin mención de presupuestos ficticios.
1Caso de Producción: Recuperación de un Proyecto Médico tras Borrado Accidental
Un desarrollador borró accidentalmente un módulo crítico de cálculo de dosis pediátricas minutos antes de una demostración, y el comando deshacer de su editor no respondía porque la aplicación se había cerrado.
Gracias a que el equipo utilizaba Git con confirmaciones continuas, bastó con ejecutar un comando de restauración (`git checkout HEAD -- .` / `git restore .`) para devolver todos los archivos borrados al estado exacto del último commit en menos de 2 segundos.
Fichas Nemotécnicas de Conceptos Clave
Glosario rápido para recordar los términos fundamentales de la lección.
Arquitectura donde cada programador tiene una copia completa del historial de todo el proyecto en su disco duro local, no solo los archivos más recientes.
Zona intermedia de preparación donde seleccionas minuciosamente qué cambios concretos formarán parte de la próxima instantánea antes de confirmarla.
Cadena criptográfica de 40 caracteres hexadecimales que identifica unívocamente una instantánea (commit) basándose en su contenido.
¿Qué es Git y para Qué Sirve? Control de Versiones Explicado
Selecciona una opción para autoevaluarte al instante. La respuesta se califica de inmediato.
¿Cuál es la función del Área de Preparación (Staging Area) en Git?
¿Qué contiene la carpeta oculta `.git` que se crea al hacer `git init`?
¿Qué comando se debe ejecutar para configurar el nombre del autor para todos los repositorios del usuario?
Preguntas Frecuentes (FAQ)
¿Git requiere conexión a Internet para funcionar?
No. Git es 100% local. Puedes gestionar historiales, crear ramas, fusionar y hacer commits sin acceso a la red. El Internet solo se necesita para sincronizar con repositorios remotos como GitHub o GitLab.
¿Por qué se llama sistema 'distribuido'?
Porque a diferencia de sistemas antiguos centralizados (como SVN), cada desarrollador tiene una copia íntegra de toda la base de datos del proyecto en su máquina, eliminando el punto único de fallo si el servidor se cae.
¿Quién creó Git y en qué año?
Fue creado en 2005 por Linus Torvalds, el creador del kernel de Linux, tras tener desacuerdos con el software propietario de control de versiones BitKeeper.