← Git

Fundamentos de Git

¿Qué es Git y para qué sirve?

Ver respuesta — intenta responderla en voz alta primero

Git es un sistema de control de versiones distribuido: registra el historial de cambios de un proyecto para que puedas volver a cualquier versión anterior, trabajar en paralelo con otras personas y fusionar el trabajo sin pisarse. Es distribuido porque cada persona tiene una copia completa del repositorio en su máquina.

Imagina que estás escribiendo un proyecto y guardas copias: proyecto_final, proyecto_final_v2, proyecto_final_bueno_este_si. Eso es control de versiones a mano, y es un desastre.

Git hace eso por ti, pero bien:

  • Guarda una foto (commit) de tu proyecto cada vez que se lo pides.
  • Puedes volver a cualquier foto anterior.
  • Puedes trabajar en varias ideas a la vez con ramas, sin romper lo que ya funciona.
  • Varias personas pueden trabajar en el mismo proyecto y fusionar sus cambios.

Que sea distribuido significa que no dependes de un servidor central para trabajar: cada quien tiene el historial completo en su computadora y puede hacer commits sin internet.

# Ver la versión de Git instalada (comprueba que lo tienes)
git --version
# Salida esperada: git version 2.x.x

# Convertir una carpeta cualquiera en un repositorio Git
git init
# Salida: Initialized empty Git repository in /ruta/.git/

# Ver el estado del repositorio
git status
# Muestra en qué rama estás y qué archivos han cambiado

Confundir Git con GitHub, o pensar que Git necesita internet para funcionar. Git es una herramienta que corre en tu máquina y funciona sin conexión; GitHub es un servicio en la nube para alojar repositorios de Git. Otro error: creer que Git guarda "diferencias" cuando en realidad guarda fotos (snapshots) del proyecto en cada commit.

"Git es un sistema de control de versiones distribuido. Sirve para llevar el historial de cambios de un proyecto, poder volver atrás, trabajar en paralelo con ramas y colaborar con otras personas fusionando su trabajo. Es distribuido porque cada quien tiene el repositorio completo en local, así que puedo hacer commits sin conexión y luego sincronizar con un remoto."

Reto rápido

¿Qué diferencia hay entre un sistema de control de versiones centralizado y uno distribuido como Git?

Ver respuesta

En un sistema centralizado (como SVN), el historial vive en un único servidor y necesitas conexión para casi todo. En uno distribuido como Git, cada persona tiene una copia completa del repositorio (con todo el historial) en su máquina, así que puede trabajar y hacer commits sin conexión, y solo sincroniza con el remoto cuando quiere.