PTENES
MÓDULO 1.2

🌿 Git: Guardar tu trabajo

Git es el control de versiones de tu proyecto. Con él ya no perderás código y podrás volver en el tiempo del proyecto a cualquier punto en el que todo funcionaba. Aquí aprenderás a guardar versiones de tu trabajo y dormir tranquilo.

6
Temas
45
Minutos
Cero
Nivel
Práctico
Tipo
1

Qué es el control de versiones

Imagina un Ctrl+Z infinito para todo tu proyecto. No solo para el último carácter que escribiste, sino para cualquier punto del historial: ayer por la mañana, la semana pasada, antes de ese cambio que lo rompió todo. Eso es control de versiones. Git guarda una línea de tiempo de tu proyecto, y cada vez que guardas (un "commit"), creas un punto al que siempre puedes volver.

LÍNEA DE TIEMPO DEL PROYECTO primero commit a1b2c3 agrega menú d4e5f6 arregla colores 7a8b9c HEAD ahora e0f1a2 volver en el tiempo a cualquier punto

🧠 Analogía: un Ctrl+Z infinito

En un editor de texto, Ctrl+Z deshace lo último que escribiste. Pero si cierras el programa, el historial desaparece. Git es como un Ctrl+Z que nunca se aplica y funciona para todo el proyecto.

  • •Cada vez que guardas, se convierte en una foto del proyecto en ese momento
  • •Puedes mirar cualquier foto antigua y ver qué cambió
  • •Si algo se rompe, vuelves a la instantánea en la que todo estaba bien
  • •No se pierde nada: todo el historial queda guardado

💡 Por qué existe Git

Antes de Git, la gente guardaba carpetas llamadas projeto-final, projeto-final-2, projeto-final-AGORA-VAI. Un desastre. Git lo resuelve: guarda todas las versiones de forma organizada, muestra exactamente qué cambió entre una y otra y permite que varias personas trabajen en el mismo proyecto sin estorbarse.

2

Instalando y configurando Git

Antes de usar Git, necesitas instalarlo y decir quién eres (nombre y email). Esto se hace una sola vez por computadora. Cada sistema operativo tiene su manera, pero al final el resultado es el mismo: el comando git empieza a funcionar en la terminal.

W

Windows

Descarga el instalador oficial y sigue el «Next, Next, Next»

# Accede al sitio oficial en el navegador

https://git-scm.com/download/win

# Ejecuta el instalador. Acepta las opciones predeterminadas.

# Viene incluido "Git Bash", una terminal solo para Git.

🍎

macOS

A través de Homebrew o de las herramientas de desarrollador

# Opción 1: con Homebrew (recomendado)

$ brew install git

# Opción 2: herramientas de Apple

$ xcode-select --install

🐧

Linux

Desde el administrador de paquetes de tu distribución

# Ubuntu / Debian

$ sudo apt install git

# Fedora

$ sudo dnf install git

Revisa la instalación y configura quién eres

# Confirma que Git está instalado

$ git --version

git version 2.43.0

# Dile a Git tu nombre (aparece en cada commit)

$ git config --global user.name "Tu Nombre"

# Dile a Git tu correo electrónico

$ git config --global user.email "tú@email.com"

# Revisa lo que quedó configurado

$ git config --list

user.name=Seu Nome

user.email=voce@email.com

O --global vale para todos los proyectos de tu computadora. Solo lo haces una vez.

⚠️ Error común

Problema: Escribes git --version y aparece "git: command not found" (o "no se reconoce como comando").
Solución: Git no se instaló, o la terminal antigua no «vio» la instalación. Cierra la terminal y vuelve a abrirla. Si aun así no funciona, repite la instalación de tu sistema operativo siguiendo los pasos anteriores.

3

El ciclo básico: init, add, commit

Hay un ciclo de tres pasos que vas a repetir mil veces en la vida: iniciar el control de versiones en una carpeta, preparar los archivos que cambiaron, y hacer commit (guardar la foto). Piensa en cada commit como tomar una foto del proyecto: tú eliges qué entra en la foto y luego la tomas con una leyenda.

ÁREA DE TRABAJO dónde editas index.html style.css git add ÁREA DE PREPARACIÓN lo que entra en la foto + index.html + style.css git commit REPOSITORIO historial guardado editar → preparar (add) → guardar la foto (commit)

git init - Iniciar el control de versiones

Dentro de la carpeta del proyecto, este comando crea un repositorio Git (una carpeta oculta .git) que guardará todo el historial.

$ git init

Initialized empty Git repository in /home/usuario/meu-site/.git/

git status - Ver la situación

Muestra qué archivos cambiaron y aún no se guardaron. Úsalo siempre que tengas dudas.

$ git status

On branch main

No commits yet

Untracked files:

index.html

style.css

(usa "git add" para incluirlo en el próximo commit)

Rojo = archivo modificado, pero todavía fuera de la foto.

git add - Elegir qué incluir en la foto

# Agregar un archivo específico

$ git add index.html

# Agregar TODOS los archivos modificados

$ git add .

# Comprueba: ahora aparecen en verde

$ git status

Cambios que se incluirán en el commit:

new file: index.html

new file: style.css

El punto . significa "todo en esta carpeta". Verde = listo para entrar en la foto.

📷 git commit - Tomar la foto

# El -m es el pie de foto (mensaje del commit)

$ git commit -m "Primera versión del sitio"

[main (root-commit) a1b2c3d] Primera versión del sitio

2 files changed, 12 insertions(+)

create mode 100644 index.html

create mode 100644 style.css

¡Listo! La foto se guardó en el historial. El a1b2c3d y es el "código" único de este commit.

✓ Buenos mensajes de commit

  • ✓"Adiciona menu de navegacao"
  • ✓"Corrige cor do botao de envio"
  • ✓Cortas, claras, dicen QUÉ cambió

✗ Mensajes malos

  • ✗"alteracoes" (¿qué cambios?)
  • ✗"asdasd" o "."
  • ✗Commits enormes con 50 archivos mezclados
4

Entender qué cambió: status, log, diff

Git no solo sirve para guardar. También te cuenta la historia del proyecto: qué cambió ahora, qué cambió con el tiempo y exactamente qué líneas se modificaron. Tres comandos responden estas preguntas: status, log e diff.

git status - Qué cambió ahora

Después de editar un archivo que ya tiene un commit, el estado muestra que se modificó:

$ git status

On branch main

Cambios sin preparar para el commit:

modified: index.html

(usa "git add" para incluirlo en el próximo commit)

git log - La historia completa

Lista todos los commits, del más reciente al más antiguo, con autor, fecha y mensaje:

$ git log

commit 7a8b9c2d (HEAD -> main)

Author: Seu Nome <voce@email.com>

Date: Mon Jun 16 10:20 2026

Arregla los colores del menú

commit a1b2c3d4

Author: Seu Nome <voce@email.com>

Primera versión del sitio

# Versión resumida, una línea por commit

$ git log --oneline

7a8b9c2 Arruma as cores do menu

a1b2c3d Primera versión del sitio

Para salir del log cuando ocupa toda la pantalla, presiona la tecla q.

git diff - Exactamente qué líneas cambiaron

Muestra línea por línea lo que se eliminó (en rojo, con -) y lo que se agregó (en verde, con +):

$ git diff

diff --git a/index.html b/index.html

@@ -3,3 +3,3 @@

- <h1>Hola mundo</h1>

+ <h1>Bienvenido a mi sitio</h1>

Línea con - fue la versión antigua; con + y es la nueva.

👁 Cómo leer la salida en la práctica

  • •status antes de hacer commit: "¿qué voy a guardar?"
  • •diff antes de agregar: "¿los cambios están bien?"
  • •registro después: "¿cómo evolucionó el proyecto?"
5

Branches: realidades paralelas del proyecto

Una branch (rama) es una copia paralela del proyecto donde puedes probar una idea sin modificar la versión principal. Es como tener un borrador: si la idea funciona, la vuelves a integrar; si sale mal, la descartas y nada se ve afectado.

🧠 Analogía: realidades paralelas

Imagina que pudieras crear un universo paralelo de tu proyecto, probar allí una reforma descabellada y traerla al universo "real" solo si queda bien. La branch main y es la realidad principal (la que se publica); cada rama nueva es un universo de pruebas.

main nova-cor switch -c merge unido

Comandos de branch

# Ver en qué rama estás y cuáles existen

$ git branch

* main

# Crear e ir a una branch nueva de una vez

$ git switch -c nova-cor

Switched to a new branch 'nova-cor'

# ... aquí editas, haces add y commit a gusto ...

# Volver a la rama principal

$ git switch main

Switched to branch 'main'

# Traer los cambios de nueva-cor a main

$ git merge novo-cor

Updating a1b2c3d..7a8b9c2

Fast-forward

✓ Cuándo usar una rama

  • ✓Probar una nueva funcionalidad sin romper main
  • ✓Probar un diseño diferente
  • ✓Trabajar en equipo, cada quien en su propia rama

✗ Qué evitar

  • ✗Hacer todo directamente en main en proyectos serios
  • ✗Dejar que se acumulen ramas antiguas sin hacer merge
  • ✗Cambiar de rama con cambios sin guardar
6

.gitignore: O Que Nunca Versionar

No todo debe incluirse en Git. Las contraseñas, los archivos generados automáticamente y las carpetas enormes de dependencias solo estorban (y pueden ser peligrosos). El archivo .gitignore es una lista de lo que Git debe ignorar por completo: finge que estos archivos ni siquiera existen.

⚠️ Error común (y peligroso)

Problema: Haces commit de un archivo .env con la contraseña de la base de datos y lo subes a GitHub. Ahora la contraseña es pública para todo el mundo.
Solución: Crea el .gitignore antes del primer commit y agrega .env en él. Git nunca versionará este archivo y la contraseña quedará solo en tu máquina.

📦
node_modules

Dependencias (enorme)

🔑
.env

Contraseñas y claves

🏗️
dist / build

Archivos generados

💻
.DS_Store

Archivos basura del sistema

Ejemplo de archivo .gitignore

Crea el archivo en la raíz del proyecto (touch .gitignore) y coloca dentro una regla por línea:

# Dependencias instaladas

node_modules/

# Variables de entorno y contraseñas

.env

.env.local

# Archivos generados por el build

dist/

build/

# Basura del sistema operativo

.DS_Store

Thumbs.db

# Logs

*.log

La barra / al final indica una carpeta. El * en *.log significa "cualquier archivo que termine en .log".

💡 Consejo: no hace falta memorizar

Hay .gitignore listos para cada tipo de proyecto en el sitio gitignore.io. Escribes "node", "python", etc., y genera el archivo completo. Al principio, copia desde ahí y ve aprendiendo qué hace cada línea.

📚 Resumen del módulo

✓
Control de versiones - un Ctrl+Z infinito y una línea de tiempo del proyecto
✓
init, add, commit - iniciar, preparar y tomar la foto del proyecto
✓
status, log, diff - ver qué cambió ahora, el historial y cada línea
✓
branches - realidades paralelas para probar sin romper main
✓
.gitignore - nunca versionar node_modules, .env ni archivos de contraseñas

Siguiente módulo:

1.3 - GitHub y Pages (sube tu código a la nube y publica tu sitio gratis)