0%
Inicio 9 Glossary Item 9 Git
« Back to Glossary Index

(Control de Versiones)


Nivel Principiante

Imagina que estás escribiendo un trabajo muy importante para la escuela. A menudo guardas varias copias con nombres como «trabajo-final-v1.doc», «trabajo-final-v2.doc», por si algo sale mal. Git es una herramienta que hace esto de forma inteligente. Te permite guardar versiones de tu trabajo de forma automática, ver todos los cambios que has hecho y, si te equivocas, volver fácilmente a una versión anterior. Es como una máquina del tiempo para tu código.

Nivel Intermedio

Git es un sistema de control de versiones distribuido (Distributed Version Control System) de código abierto, diseñado para rastrear los cambios en los archivos de un proyecto a lo largo del tiempo. Su principal ventaja es que cada desarrollador tiene una copia completa de todo el historial del proyecto en su máquina local. Esto permite trabajar de forma autónoma y colaborar de manera eficiente con otros sin necesidad de una conexión constante a un servidor central.

Los comandos básicos de Git te permiten:

  • git add: Seleccionar los archivos que deseas guardar.
  • git commit: Guardar los cambios en una versión específica.
  • git push: Subir los cambios a un repositorio remoto (como GitHub o GitLab).
  • git pull: Descargar los cambios hechos por otros desarrolladores.

Esta herramienta es fundamental en el desarrollo de software moderno, ya que facilita la colaboración, la gestión de proyectos y la reversión de errores.

Nivel Avanzado

Técnicamente, Git se basa en un modelo de grafo de objetos que almacena tres tipos de objetos principales: blobs (archivos), trees (directorios) y commits (versiones del proyecto). Los commits son inmutables y se enlazan entre sí, formando una historia de cambios. En lugar de almacenar las diferencias entre versiones (como otros sistemas), Git almacena una «instantánea» completa de todo el proyecto en cada commit, lo que lo hace muy eficiente.

Su modelo de control de versiones distribuido se apoya en conceptos clave:

  • Branches (Ramas): Permite a los desarrolladores crear versiones independientes de la línea principal de desarrollo para trabajar en nuevas funcionalidades o corregir errores sin afectar el código principal. La fusión (merge) o rebase (rebase) de ramas permite integrar estos cambios de vuelta.
  • Staging Area (Área de Preparación): Un estado intermedio entre el directorio de trabajo y el repositorio local. Los desarrolladores eligen qué cambios quieren incluir en el siguiente commit utilizando git add, lo que proporciona un control granular.
  • Hashes SHA-1: Git utiliza un hash criptográfico (SHA-1) para identificar de forma única cada commit y cada objeto, lo que garantiza la integridad de los datos y evita la manipulación del historial.

Git es la base de plataformas de colaboración como GitHub, GitLab y Bitbucket, que extienden sus funcionalidades con herramientas de CI/CD (Integración y Despliegue Continuos), revisiones de código (pull requests) y gestión de proyectos. El manejo de Git a nivel avanzado, incluyendo la resolución de conflictos de fusión, el uso de tags y la reescritura del historial, es una habilidad indispensable en la arquitectura de software.

« Volver al índice del glosario