W3docs

Introducción

Descripción de sistemas de control de versiones, gestión de código fuente, qué es Git, cómo instalarlo, claves SSH y repositorios Git.

Sistemas de control de versiones

Este es el punto de partida del curso Learn Git. Al finalizar esta introducción comprenderás qué es un sistema de control de versiones, por qué los equipos dependen de uno, en qué se diferencia Git de herramientas más antiguas y cómo poner Git en funcionamiento en tu máquina. Cada sección que aparece a continuación enlaza a un capítulo completo donde el tema se explica en profundidad.

Este es el camino que recorre esta sección:

Sistema de control de versiones

Un Sistema de control de versiones (VCS) es una herramienta que registra los cambios en un conjunto de archivos a lo largo del tiempo para que puedas recuperar cualquier versión anterior, ver quién cambió qué y trabajar en paralelo sin sobrescribirse mutuamente. A veces también se le llama Gestión de código fuente (SCM) o Sistema de control de revisiones (RCS).

Existen tres familias de VCS, y se diferencian en dónde reside el historial:

  • Los VCS locales guardan cada versión en una base de datos de un único ordenador (por ejemplo, la antigua herramienta rcs). Son sencillos, pero un fallo de disco lo pierde todo y no permiten una verdadera colaboración.
  • Los VCS centralizados (CVCS) como Subversion (SVN) o CVS almacenan el historial completo en un único servidor central. Los desarrolladores descargan una copia de trabajo, pero el historial solo existe en el servidor. Si el servidor cae, nadie puede hacer commits; si se pierde sin una copia de seguridad, el historial del proyecto desaparece.
  • Los VCS distribuidos (DVCS) como Git o Mercurial otorgan a cada desarrollador una copia completa del repositorio, incluido su historial íntegro. Puedes hacer commits, crear ramas y consultar el registro completamente sin conexión, y cualquier clon puede restaurar a los demás.

Git es un VCS distribuido, que es la razón principal por la que es rápido y resiliente.

Gestión de código fuente

La gestión de código fuente (SCM) es esencialmente otro nombre para el control de versiones. Es la práctica (y las herramientas) de rastrear las modificaciones en un repositorio de código fuente para que puedas revisar el historial, comparar revisiones y resolver conflictos de fusión — la situación en la que dos personas modifican las mismas líneas y la herramienta necesita que un humano decida qué cambio prevalece.

SCM permite que cada desarrollador trabaje de forma independiente en una rama separada y luego combine el trabajo con una fusión. Más allá del historial puro, un buen SCM proporciona anotaciones/blame, etiquetado de versiones y la capacidad de revertir un cambio incorrecto en segundos.

Software de control de versiones

El software de control de versiones es el programa concreto que implementa el control de versiones para tu equipo. Para un único desarrollador es conveniente; para un equipo con múltiples desarrolladores es una necesidad, ya que es la única forma segura de combinar el trabajo de todos.

Las opciones más populares incluyen Git, Subversion (SVN), CVS, Mercurial y Monotone. Cada proyecto elige el que mejor se adapta a su flujo de trabajo; Git es con diferencia el más común en la actualidad. Los capítulos siguientes comparan sus ventajas e inconvenientes en detalle.

Qué es Git

Git es el sistema de control de versiones distribuido utilizado en la mayor parte del mundo del software. Rastrea los cambios en tu código fuente durante el desarrollo y gestiona proyectos de cualquier tamaño, desde un script de un solo archivo hasta el kernel de Linux.

Git destaca por varias razones:

  • Creación de ramas local barata y rápida — crear una rama es casi instantáneo porque no es más que un puntero a un commit.
  • Un área de preparación (staging) — eliges exactamente qué cambios van al siguiente commit con git add antes de ejecutar git commit.
  • Funciona sin conexión — todas las operaciones, excepto la sincronización con un servidor remoto, se ejecutan contra tu copia local.
  • Integridad de datos — cada commit se identifica mediante un hash SHA-1 de su contenido, por lo que la corrupción es detectable.

Instalar Git

Trabajar con Git comienza por instalarlo (o actualizar tu copia existente). El instalador varía según el sistema operativo:

  • macOS — el instalador de Git para Mac, Homebrew (brew install git) o MacPorts.
  • Windows — el paquete oficial Git for Windows, que incluye Git Bash.
  • Linux — el gestor de paquetes de tu distribución, p. ej. sudo apt install git en Debian/Ubuntu.

Una vez instalado, confirma la versión desde un terminal:

git --version
# git version 2.45.2

El número exacto que veas será el que esté vigente cuando lo instales; cualquier versión reciente 2.x es válida para este curso.

Repositorio Git

Un repositorio Git ("repo") es el almacenamiento que guarda los archivos de tu proyecto junto con el historial completo de todos los cambios. El historial reside en una carpeta oculta .git en la raíz del proyecto.

Puedes crear un repositorio de dos maneras: iniciar uno nuevo con git init o copiar uno remoto existente con git clone:

# Turn the current folder into a new, empty repository
git init
# Initialized empty Git repository in /path/to/project/.git/

# Or download an existing project and its full history
git clone https://github.com/user/project.git

Clave SSH

Una clave SSH es una credencial de acceso utilizada por el protocolo SSH (Secure Shell). SSH es un protocolo de red que te permite iniciar sesión desde un ordenador a otro de forma segura a través de una red no confiable.

En Git, un par de claves SSH (una clave privada que mantienes en secreto y una clave pública que subes a GitHub, GitLab, etc.) te permite hacer push y pull sin tener que escribir tu contraseña cada vez. El capítulo sobre claves SSH explica paso a paso cómo generar una clave y añadirla a tu cuenta.

Práctica

Práctica
¿Cuál de las siguientes es una característica de Git como sistema de control de versiones?
¿Cuál de las siguientes es una característica de Git como sistema de control de versiones?
Was this page helpful?