Git · 01

Conceptos de Git, desde cero

Git es un programa que guarda el historial de cambios de una carpeta. Cada vez que le pedís, saca una “foto” de tus archivos y la guarda con un mensaje. Después podés ver qué cambió, volver atrás, trabajar en paralelo y compartir el proyecto con otras personas.

Términos de esta página

Volvé acá cuando una palabra no te suene. Todas se explican con más detalle abajo.

Repositorio (repo)
Una carpeta cuyo historial controla Git. Se distingue porque adentro tiene una carpeta oculta llamada .git, donde Git guarda todo el historial.
Commit
Una “foto” guardada del proyecto en un momento dado, con un mensaje que explica qué cambió, la fecha y quién lo hizo. Es la unidad básica del historial.
Hash
El identificador único de cada commit: un código como 3ddb522 (versión corta de uno de 40 caracteres). Sirve para referirse a un commit puntual.
Carpeta de trabajo
Los archivos tal como los ves y editás en tu editor (en inglés, working directory).
Área de preparación
Una “sala de espera” donde ponés los cambios que querés incluir en el próximo commit (en inglés, staging area o index). Se llena con git add.
Rama (branch)
Una línea de trabajo independiente. Permite probar algo sin tocar la versión principal. La rama principal suele llamarse main.
HEAD
Un marcador que indica “dónde estás parado”: normalmente apunta a la rama actual y, a través de ella, al último commit.
Remoto (remote)
Una copia del repositorio en otro lugar, normalmente en GitHub. Por convención, el remoto principal se llama origin.
Clonar
Descargar un repositorio remoto completo (archivos + historial) a tu computadora.
Push / Pull
Push: subir tus commits al remoto. Pull: traer los commits nuevos del remoto a tu copia.
Merge
Unir los cambios de una rama con otra.
GitHub
Un sitio web que guarda repositorios Git en internet y agrega herramientas para colaborar. Git es el programa; GitHub es un servicio que lo usa.
1

Qué problema resuelve Git

Sin Git, para no perder trabajo terminás con archivos como app-final.js, app-final-v2.js, app-final-AHORA-SI.js. No sabés qué cambió entre una y otra, y si dos personas editan a la vez, alguien pisa el trabajo del otro.

Con Git trabajás siempre sobre los mismos archivos, y cuando llegás a un punto que te interesa guardar hacés un commit. Git recuerda todos los commits, así que podés:

  • Ver el historial: qué cambió, cuándo, quién y por qué (por el mensaje).
  • Volver atrás: recuperar cómo estaba un archivo o todo el proyecto en cualquier commit.
  • Trabajar en paralelo: con ramas, probar una idea sin romper la versión que funciona.
  • Colaborar: varias personas trabajan en el mismo proyecto y Git une los cambios.
  • Tener respaldo: si subís el repo a GitHub, tu trabajo queda también en internet.

Git trabaja en tu computadora: no necesita internet para hacer commits ni ver el historial. Internet solo hace falta para compartir (push/pull).

2

Las cuatro zonas: dónde está cada cambio

Un cambio pasa por varias “zonas” antes de quedar guardado y compartido. Entender esto explica casi todos los comandos:

  1. Carpeta de trabajo: editás un archivo. Git se da cuenta de que cambió, pero todavía no lo guardó.
  2. Área de preparación: con git add elegís qué cambios van a entrar en el próximo commit. Sirve para guardar solo una parte de lo que modificaste.
  3. Repositorio local: con git commit lo preparado se guarda en el historial, dentro de la carpeta .git de tu computadora.
  4. Repositorio remoto: con git push tus commits se suben a GitHub. Con git pull traés los de otras personas.
Carpeta de trabajo tus archivos, como los ves en el editor app.js modificado Área de preparación lo que va a entrar en el próximo commit staging / index Repositorio local el historial de commits, en tu computadora carpeta .git Repositorio remoto una copia en internet para compartir GitHub · origin git add git commit git push git pull trae los commits del remoto y actualiza tus archivos
i

¿Por qué existe el área de preparación? Porque a veces modificás varios archivos y querés guardarlos en commits separados (por ejemplo, “arreglo del login” y “cambio de colores”). Con git add elegís qué va en cada uno.

3

Commits e historial

Cada commit guarda el estado completo del proyecto y apunta al commit anterior (su “padre”). Así se forma una cadena: el historial. Cada commit tiene un hash único, un mensaje, un autor y una fecha.

La rama main es simplemente un marcador que apunta al último commit de esa línea. HEAD te dice en qué rama estás. Cuando hacés un commit nuevo, la rama actual avanza sola hasta él.

a1f3 “Primer commit” 7c2e “Agrega la ruta /crear” 3ddb “Corrige el puerto” padre padre main HEAD “estás acá” más viejo más nuevo
✓

Buenos commits: chicos y con un solo propósito. El mensaje dice qué hace y, si no es obvio, por qué: “Corrige el puerto de la app en el Dockerfile”.

i

Los commits son locales hasta que hacés git push. Podés hacer muchos commits sin internet y subirlos todos juntos después.

4

Los estados de un archivo

Cuando corrés git status, Git te dice en qué estado está cada archivo. Son cuatro:

  • Sin seguimiento (untracked): un archivo nuevo que Git nunca guardó. Git lo ve, pero lo ignora hasta que hagas git add.
  • Preparado (staged): agregado con git add; va a entrar en el próximo commit.
  • Sin cambios (unmodified): igual que en el último commit. No aparece en git status.
  • Modificado (modified): cambió desde el último commit, pero todavía no lo preparaste.
Sin seguimiento untracked Preparado staged Sin cambios committed Modificado modified git add git commit editás git add para incluir los cambios nuevos en el próximo commit
5

Ramas, en una idea

Una rama te deja trabajar en algo nuevo sin tocar la versión que funciona. Creás una rama (por ejemplo nueva-ruta), hacés commits ahí, y cuando está lista la unís (merge) a main. Si la idea no sirvió, borrás la rama y main nunca se enteró.

Técnicamente, una rama es solo un marcador que apunta a un commit: crearla es instantáneo y no copia archivos. Todo el detalle está en Ramas.

6

Git y GitHub no son lo mismo

Git

  • Es un programa que instalás en tu computadora.
  • Guarda el historial en la carpeta .git de cada proyecto.
  • Funciona sin internet y sin cuenta en ningún lado.
  • Se usa desde la terminal (o desde editores como VS Code, que lo usan por detrás).

GitHub

  • Es un sitio web (un servicio) que guarda repositorios Git en internet.
  • Sirve de respaldo y para compartir: otras personas clonan tu repo o te proponen cambios.
  • Agrega herramientas: pull requests (revisar cambios antes de unirlos), issues (tareas y errores), Actions (automatizaciones).
  • Alternativas: GitLab, Bitbucket, Azure DevOps. Los comandos de Git son los mismos.
✓

¿Listo para usarlo? Seguí Primeros pasos: instalar, configurar, primer commit y subirlo a GitHub, paso a paso.