Repositorio local y commits

7 min

Tabla de contenidos


1 — Las tres zonas de Git

Para entender los commits, hay que visualizar primero las tres zonas por las que Git hace transitar tus archivos.

ZonaDescripciónComando para entrar
Directorio de trabajoTus archivos tal como los editas(edición directa)
Zona de staging (índice)Los cambios que preparas para registrargit add
Repositorio localEl historial permanente de los commitsgit commit

Analogía: preparar un paquete. El directorio de trabajo es tu escritorio desordenado; la zona de staging es la caja donde pones lo que quieres enviar; el commit es el momento en que sellas la caja y la archivas.

↑ Volver arriba


2 — Inicializar un repositorio local

Para transformar una carpeta ordinaria en repositorio Git:

bash
# Situarse en la carpeta del proyecto
cd mon-projet

# Inicializar el repositorio
git init

Eso crea una subcarpeta oculta .git/ que contiene todo el historial y la configuración del repositorio.

bash
# Verificar el estado del repositorio recién creado
git status

⚠️ Nunca borres la carpeta .git/: contiene todo el historial. Borrarla equivale a perder el versionado (pero no tus archivos actuales).

🔧 Mini-ejercicio — Escribe el comando que transforma la carpeta actual en repositorio Git, luego el que muestra su estado.

✅ Ver una solución
bash
git init
git status

↑ Volver arriba


3 — Seguimiento de los archivos

Un archivo puede estar seguido (tracked) o no seguido (untracked) por Git.

bash
# Preparar un archivo preciso
git add fichier.txt

# Preparar todos los cambios de la carpeta
git add .

# Ver el estado (seguido / no seguido / preparado)
git status
ComandoEfecto
git add fichier.txtPrepara un archivo preciso
git add .Prepara todos los archivos modificados/nuevos
git restore --staged fichier.txtRetira un archivo de la zona de staging
git statusMuestra el estado de cada archivo

git status es tu mejor amigo: úsalo antes y después de cada git add para ver exactamente lo que Git se dispone a registrar.

🔧 Mini-ejercicio — Acabas de modificar index.html y style.css. Escribe el comando que prepara (stage) solo index.html.

✅ Ver una solución
bash
git add index.html

↑ Volver arriba


4 — Crear un commit

Un commit es una instantánea (snapshot) de tu proyecto en un instante dado, acompañada de un mensaje que explica el cambio.

bash
# Preparar y luego registrar
git add .
git commit -m "Añade la página de inicio"

Cada commit posee:

ElementoDescripción
Un identificador (hash)Ej. a1b2c3d… — único
Un autorTu nombre + correo (config de la lección 03)
Una fechaMarca de tiempo del commit
Un mensajeLa descripción del cambio
Un padreEl commit anterior (cadena de historial)
bash
# Ver el historial de los commits
git log
git log --oneline   # versión compacta

Un buen commit es atómico: hace una sola cosa coherente. Evita el commit cajón de sastre «un montón de cosas» — prefiere varios commits pequeños y claros.

🔧 Mini-ejercicio — Prepara todos tus cambios y crea un commit cuyo mensaje sea «Añade la página de contacto».

✅ Ver una solución
bash
git add .
git commit -m "Añade la página de contacto"

↑ Volver arriba


5 — Buenas prácticas de mensajes

El mensaje de commit cuenta la historia del proyecto. Un buen mensaje ahorra horas a todo el equipo (y a ti mismo dentro de 6 meses).

Reglas de base

  • Escribir en imperativo presente: «Añade…», «Corrige…», «Elimina…».
  • Una línea de resumen corta (≤ 50 caracteres), luego un cuerpo detallado si hace falta.
  • Explicar el porqué, no solo el qué.

Comparación

❌ Mal mensaje✅ Buen mensaje
updateActualiza la dependencia Maven a 3.9
fix bugCorrige el crash al arrancar si falta la config
wipAñade la validación del formulario de conexión

Convención habitual (Conventional Commits)

feat: añade la autenticación por token
fix: corrige la paginación de los resultados
docs: completa el README de instalación

Truco mnemotécnico: un buen mensaje debe completar la frase «Si aplico este commit, va a…». Ejemplo: «…añadir la página de inicio».

↑ Volver arriba


6 — El archivo .gitignore

Algunos archivos nunca deben versionarse: archivos temporales, dependencias voluminosas, secretos, archivos compilados. El archivo .gitignore indica a Git que los ignore.

bash
# Ejemplo de contenido de un archivo .gitignore
target/
node_modules/
*.log
.env
.DS_Store
Qué ignorarPor qué
node_modules/, target/Se reconstruyen automáticamente, voluminosos
.env, *.keySecretos — ¡nunca en Git!
*.log, *.tmpArchivos temporales sin valor

⚠️ Regla de oro de seguridad: nunca hagas commit de contraseñas, claves API o secretos. Una vez en el historial Git, un secreto se queda — aunque lo borres después. Pon .env en .gitignore desde el principio.

🔧 Mini-ejercicio — Escribe la línea a añadir en un .gitignore para impedir que Git versione el archivo de secretos .env.

✅ Ver una solución
.env

↑ Volver arriba


7 — Quiz — Repositorio local y commits

Question 1: ¿Qué comando transforma una carpeta ordinaria en repositorio Git?

a) git start

b) git init

c) git new

d) git create

💡 Ver la solución

Respuesta: b)git init crea la subcarpeta .git/ que contiene el historial y convierte la carpeta en repositorio.


Question 2: ¿Cuál es el orden correcto de las tres zonas de Git?

a) Repositorio → staging → directorio de trabajo

b) Directorio de trabajo → staging → repositorio local

c) Staging → repositorio → directorio de trabajo

d) Directorio de trabajo → repositorio → staging

💡 Ver la solución

Respuesta: b) — Se edita (directorio de trabajo), se prepara con git add (staging) y luego se registra con git commit (repositorio local).


Question 3: ¿Para qué sirve git add?

a) Para crear un commit

b) Para preparar cambios en la zona de staging

c) Para borrar un archivo

d) Para enviar el código a GitHub

💡 Ver la solución

Respuesta: b)git add mueve los cambios del directorio de trabajo a la zona de staging, antes del commit.


Question 4: ¿Cuál es un buen mensaje de commit?

a) truc

b) wip

c) Corrige el crash al arrancar si falta la config

d) .

💡 Ver la solución

Respuesta: c) — Es claro, en imperativo, y explica el cambio. Los demás son vagos e inútiles en el historial.


Question 5: ¿Por qué usar un .gitignore?

a) Para acelerar el ordenador

b) Para impedir que Git versione ciertos archivos (temporales, secretos, dependencias)

c) Para borrar el historial

d) Para ignorar los commits

💡 Ver la solución

Respuesta: b).gitignore lista los archivos que Git debe ignorar, en especial los secretos (.env) y las carpetas reconstruibles (node_modules/).

↑ Volver arriba


8 — Práctica — Tu primer repositorio

Consigna

Crea un repositorio local, añade un archivo, ignora un archivo secreto, y haz dos commits limpios.


Corrección — Secuencia de comandos esperada

bash
# 1. Crear y entrar en la carpeta
mkdir mon-premier-depot
cd mon-premier-depot

# 2. Inicializar el repositorio
git init

# 3. Crear un archivo de contenido y un .gitignore
echo "# Mi proyecto" > README.md
echo ".env" > .gitignore
echo "SECRET=123" > .env        # este archivo debe ignorarse

# 4. Verificar el estado (.env NO debe aparecer)
git status

# 5. Primer commit
git add README.md .gitignore
git commit -m "Inicializa el proyecto con README y gitignore"

# 6. Modificar y segundo commit
echo "Descripción del proyecto" >> README.md
git add README.md
git commit -m "Completa la descripción en el README"

# 7. Consultar el historial
git log --oneline

Resultado esperado:

b2c3d4e Completa la descripción en el README
a1b2c3d Inicializa el proyecto con README y gitignore

Verifica que .env nunca aparece en git status: es la prueba de que tu .gitignore funciona y de que tu secreto está protegido.

↑ Volver arriba


9 — Síntesis

Puntos a recordar

  1. Tres zonas: directorio de trabajo → staging (git add) → repositorio local (git commit).
  2. git init crea el repositorio (carpeta .git/).
  3. Un commit es una instantánea + un mensaje, unido al commit padre.
  4. Buenos mensajes: imperativo, claros, atómicos, que expliquen el porqué.
  5. .gitignore protege los secretos y excluye los archivos inútiles.

A continuación

Lección 07 — Ramas e historial: trabajar en varias versiones en paralelo sin romper la versión principal.

↑ Volver arriba


Todos los derechos reservados. Toda reproducción, difusión, uso o adaptación de este curso, en todo o en parte, está estrictamente prohibida sin la autorización escrita previa del Dr. Haythem REHOUMA.

Curso creado por Dr. Haythem REHOUMA — Desarrollo y despliegue de soluciones de datos