¿Qué es Git?

Git permite registrar y organizar las modificaciones realizadas al código en un proyecto de programación. Además permite revertir cambios y sincronizar el registro con otras copias remotas. Esto lo hace una de las herramientas más utilizadas para el desarrollo de programas y webs que involucran múltiples personas.

Git es un programa que instalas en tu computador. Funciona sin conexión a internet: guarda el historial completo de tu proyecto en una carpeta oculta llamada .git, dentro del proyecto mismo.

¿Qué es GitHub?

GitHub es un servicio en internet que aloja repositorios de Git. Es una copia de tu proyecto, con todo su historial, guardada en los servidores de GitHub.

Sirve para tres cosas:

  • Respaldo — si se te echa a perder el computador, el proyecto sigue ahí.
  • Colaboración — varias personas trabajan sobre el mismo proyecto y sincronizan sus cambios.
  • Entrega — es donde el profesor revisa tu trabajo, incluyendo cuándo hiciste cada cambio.

Sobre eso, GitHub agrega herramientas que Git no tiene: una interfaz web para ver el código, issues para anotar tareas, pull requests para revisar cambios antes de integrarlos, y control de quién puede acceder al repositorio.

¿Cuál es la diferencia entre Git y GitHub?

GitGitHub
Qué esUn programaUn sitio web / servicio
Dónde viveEn tu computadorEn internet
Necesita internetNo
Quién lo hizoLinus Torvalds, 2005Una empresa (hoy de Microsoft)
Se puede reemplazarEs el estándarSí: GitLab, Bitbucket, Codeberg

La analogía

Git es el programa con el que escribes y guardas versiones, como Word. GitHub es el lugar donde subes el archivo para tenerlo respaldado y compartirlo, como Google Drive.

Puedes usar Git sin GitHub perfectamente. No puedes usar GitHub sin Git.

Control de versiones

Un sistema de control de versiones guarda fotografías del proyecto en momentos concretos. Cada fotografía se llama commit, y queda registrada con quién la hizo, cuándo, y un mensaje que explica qué cambió.

gitGraph
    commit id: "Estructura HTML"
    commit id: "Agrega estilos"
    commit id: "Formulario de contacto"
    commit id: "Corrige el menú"

El historial es una línea de tiempo. En cualquier momento puedes ver cómo estaba el proyecto en cada punto, comparar dos versiones, o volver a una anterior.

Un commit no guarda una copia completa

Git guarda solo las diferencias respecto al commit anterior. Por eso un historial de cientos de commits ocupa poco espacio.

¿Para qué sirve versionar?

Sin control de versiones, la forma habitual de guardar avances es duplicar carpetas:

proyecto/
proyecto-v2/
proyecto-final/
proyecto-final-BUENO/
proyecto-final-BUENO-arreglado/

Esto falla por razones concretas:

  • No sabes qué cambió entre una carpeta y otra: tendrías que comparar archivo por archivo.
  • No sabes por qué cambió: no hay ningún mensaje que lo explique.
  • Ocupa espacio multiplicado por cada copia.
  • No sirve para trabajar en grupo: si dos personas editan la misma carpeta, uno pisa el trabajo del otro.

Versionar con Git resuelve cada uno de esos puntos:

NecesidadCómo la resuelve Git
Saber qué cambiógit diff muestra las líneas exactas
Saber por quéCada commit lleva un mensaje
Volver atrásPuedes recuperar el estado de cualquier commit
Trabajar en paraleloCada persona trabaja en su copia y luego se fusionan
Saber quién hizo quéCada commit registra su autor
Probar algo sin romper lo que funcionaLas ramas aíslan el experimento

Por eso se evalúa el historial

Un historial con commits repartidos en el tiempo muestra cómo se construyó el trabajo. Un único commit gigante el día de la entrega no demuestra nada, y en un trabajo grupal hace imposible saber quién aportó qué.

Checkpoint

Intenta responder antes de desplegar cada pregunta.