¿Por qué git add archivos específicos vs git add .?

 

CRUD en Laravel 12 con Git - Explicación para Principiantes

¡Excelentes preguntas! Voy a explicarte por qué hacemos cada cosa en Git, no solo qué hacer. Esto te ayudará a entender el flujo de trabajo real.


📌 1. ¿Por qué git add archivos específicos vs git add .?

🤔 Tu pregunta:

"Porque se agregan normal mente solo se usa git add ."

✅ Respuesta:

Ambas formas son correctas, pero se usan en diferentes situaciones:

git add . - Agregar TODO

bash
# Agrega TODOS los archivos modificados en la carpeta actual y subcarpetas
git add .

¿Cuándo usarlo?

  • Cuando trabajas en una funcionalidad completa y quieres subir todo

  • Cuando estás seguro de que todos los cambios son para este commit

  • Para proyectos pequeños o cuando eres principiante

git add archivo-especifico - Agregar selectivamente

bash
# Solo agrega estos archivos específicos
git add database/factories/PastelFactory.php
git add database/seeders/PastelSeeder.php
git add database/seeders/DatabaseSeeder.php

¿Cuándo usarlo? (MEJORES PRÁCTICAS)

  • Cuando quieres hacer commits separados para diferentes cosas

  • Ejemplo: Hoy trabajaste en 3 cosas diferentes:

    1. Arreglaste un bug en el controlador

    2. Creaste un nuevo seeder

    3. Actualizaste el README

bash
# MAL: Un solo commit para todo mezclado
git add .
git commit -m "muchos cambios"

# BIEN: Commits separados por tema
git add app/Http/Controllers/PastelController.php
git commit -m "fix: corregir validación de precio en PastelController"

git add database/seeders/
git commit -m "feat: agregar seeder para datos de prueba"

git add README.md
git commit -m "docs: actualizar instrucciones de instalación"

📊 Comparación Visual

ComandoQué haceCuándo usarlo
git add .Agrega todos los archivos modificadosUn solo tema de cambio
git add archivo.phpAgrega solo ese archivoVarios temas, commits separados
git add carpeta/Agrega todos los archivos en esa carpetaVarios archivos del mismo tema

🎯 En el tutorial, usamos git add específico porque:

  1. Enseñamos buenas prácticas desde el principio

  2. Separamos por temas: migración, seeder, modelo, etc.

  3. Facilita entender qué archivos pertenecen a cada parte

  4. Es más profesional hacer commits atómicos (una cosa por commit)


📌 2. ¿Por qué usar git tag si ya tenemos commits?

🤔 Tu pregunta:

"porque usar git tag -a v0.1.0 -m 'Migración y seeding inicial funcionando' si en el commit ya lleva el nombre"

✅ Respuesta:

Tags y Commits son cosas diferentes que sirven para propósitos distintos:

📝 Commits (Cambios diarios)

bash
# Commits normales - cambios incrementales
git commit -m "feat: agregar campo precio a la tabla pasteles"
git commit -m "fix: corregir error en la validación del nombre"
git commit -m "refactor: optimizar consulta de pasteles disponibles"

Los commits son como entradas en un diario:

  • Registran cambios diarios

  • Hay muchos commits (decenas, cientos)

  • Sirven para saber qué cambió y por qué

  • Son detallados y específicos

🏷️ Tags (Hitos importantes)

bash
# Tags - marcan versiones estables
git tag -a v1.0.0 -m "Versión estable del CRUD de pasteles"
git tag -a v1.1.0 -m "Agregado sistema de autenticación"
git tag -a v2.0.0 -m "Nueva interfaz y API REST"

Los tags son como hitos o versiones:

  • Marcan puntos importantes en el proyecto

  • Son pocos tags (v1.0, v2.0, v3.0)

  • Sirven para saber versiones estables

  • Son generales y de alto nivel

🎯 Analogía para entenderlo mejor

Imagina que estás construyendo una casa:

Concepto GitAnalogíaEjemplo
CommitsFotos diarias del progreso"Día 1: Coloqué los cimientos"
"Día 2: Construí las paredes"
"Día 3: Instalé el techo"
TagsHitos importantes"¡Casa terminada! (v1.0)"
"¡Casa con jardín! (v2.0)"
"¡Casa con piscina! (v3.0)"

📊 Comparación Detallada

CaracterísticaCommitTag
PropósitoRegistrar cambios diariosMarcar versiones estables
CantidadMuchos (cientos)Pocos (3-5 por versión)
Formatofeat: agregar filtrov1.0.0
VisibilidadPara desarrollo diarioPara lanzamientos oficiales
Buscargit loggit tag
Ejemplofix: corregir error en validaciónv2.0.0 - API REST implementada

💻 Código de ejemplo

bash
# ==========================================
# FLUJO REAL CON COMMITS Y TAGS
# ==========================================

# PASO 1: Trabajo diario (COMMITS)
git add .
git commit -m "feat: crear migración para tabla pasteles"
# commit: a1b2c3

git add .
git commit -m "feat: crear modelo Pastel"
# commit: d4e5f6

git add .
git commit -m "feat: crear controlador CRUD"
# commit: g7h8i9

# PASO 2: Funcionalidad completa - Crear TAG
git tag -a v0.1.0 -m "Estructura básica del CRUD"
# Esto marca que en el commit g7h8i9 tenemos una versión funcional

# PASO 3: Seguir trabajando
git add .
git commit -m "feat: agregar filtros de búsqueda"
# commit: j1k2l3

git add .
git commit -m "feat: agregar exportación a Excel"
# commit: m4n5o6

# PASO 4: Nueva versión estable
git tag -a v0.2.0 -m "Filtros y exportación añadidos"

# PASO 5: Version final
git tag -a v1.0.0 -m "CRUD completo con todas las funcionalidades"

🏷️ Tipos de Tags

bash
# Tag ligero (solo nombre)
git tag v1.0.0

# Tag anotado (con mensaje) - ¡RECOMENDADO!
git tag -a v1.0.0 -m "Versión estable del CRUD"

🔍 Ver tags y commits

bash
# Ver todos los tags
git tag

# Ver historial con tags
git log --oneline --decorate

# Ver detalles de un tag específico
git show v1.0.0

# Comparar dos versiones
git diff v0.1.0 v1.0.0

🚀 Por qué usar TAGS en el mundo real

bash
# ==========================================
# ESCENARIO REAL DE PROYECTO
# ==========================================

# 1. El cliente quiere instalar tu aplicación
git clone https://github.com/tu-usuario/pasteles-app.git
cd pasteles-app

# 2. Quiere la última versión estable
git checkout v1.0.0  # ¡Más fácil que buscar el commit exacto!

# 3. O quiere una versión específica
git checkout v0.5.0  # Versión con autenticación

# 4. Los desarrolladores trabajan en nuevas características
git checkout -b feature/nueva-funcionalidad

# 5. Cuando están listos, crean nuevo tag
git tag -a v2.0.0 -m "¡Nueva interfaz y más funcionalidades!"

📝 RESUMEN PARA PRINCIPIANTES

📌 Sobre git add

bash
# ✅ SIMPLE (Para empezar)
git add .              # Agrega todo

# ✅ PROFESIONAL (Recomendado)
git add archivo1.php   # Agrega solo lo que necesitas
git add archivo2.php   # Para hacer commits separados

# ¿Cuál usar? 
# - Si eres principiante: empieza con git add .
# - Luego aprende a usar git add selectivo
# - En el trabajo real usarás más el selectivo

📌 Sobre git tag

bash
# ==========================================
# REGLA DE ORO: COMMITS vs TAGS
# ==========================================

# HACES COMMITS CADA VEZ QUE TERMINAS ALGO
git commit -m "descripción del cambio"

# HACES TAGS CADA VEZ QUE TERMINAS UNA VERSIÓN
git tag -a v1.0.0 -m "Descripción de la versión"

# ==========================================
# EJEMPLO PRÁCTICO
# ==========================================

# 🟢 Versión 0.1 - Base del proyecto
git commit -m "feat: iniciar proyecto"        # Commit #1
git commit -m "feat: crear migración"         # Commit #2
git commit -m "feat: crear modelo"            # Commit #3
git tag -a v0.1.0 -m "Estructura base lista" # 🏷️ Versión 0.1

# 🟢 Versión 0.2 - CRUD básico
git commit -m "feat: crear controlador"       # Commit #4
git commit -m "feat: crear vistas"            # Commit #5
git commit -m "feat: definir rutas"           # Commit #6
git tag -a v0.2.0 -m "CRUD funcional"        # 🏷️ Versión 0.2

# 🟢 Versión 1.0 - Versión final
git commit -m "feat: agregar autenticación"   # Commit #7
git commit -m "feat: agregar dashboard"       # Commit #8
git commit -m "feat: agregar reportes"        # Commit #9
git tag -a v1.0.0 -m "Versión estable final" # 🏷️ Versión 1.0

🎯 FLUJO RECOMENDADO PARA PRINCIPIANTES

Opción 1: Sencilla (Empieza aquí)

bash
# 1. Hacer cambios
# 2. Agregar todo
git add .
# 3. Commit
git commit -m "descripción del cambio"
# 4. Repetir...

Opción 2: Profesional (Aprende esto)

bash
# 1. Ver qué cambió
git status

# 2. Agregar archivos relacionados
git add archivo1.php archivo2.php

# 3. Commit con mensaje claro
git commit -m "feat: descripción específica del cambio"

# 4. Si todo funciona, crear tag
git tag -a v1.0.0 -m "Versión estable"

🔍 PREGUNTAS FRECUENTES

❓ ¿Puedo usar solo git add . siempre?

, pero si trabajas en varias cosas diferentes, todos los cambios irán en un solo commit, lo que dificulta entender qué cambió.

❓ ¿Cuántos commits debo hacer?

Muchos. Es mejor hacer commits pequeños y frecuentes que uno grande. Cada commit debe ser una unidad lógica de cambio.

❓ ¿Necesito tags si trabajo solo?

No obligatorio, pero te ayudarán a recordar versiones importantes de tu proyecto.

❓ ¿Puedo borrar un tag?

bash
git tag -d v1.0.0              # Borrar local
git push origin --delete v1.0.0 # Borrar remoto

❓ ¿Puedo cambiar un commit después de hacerlo?

bash
git commit --amend -m "nuevo mensaje"  # Cambiar último commit
git reset HEAD~1                       # Deshacer último commit

📚 RECURSOS ADICIONALES

Videos Recomendados para Principiantes

Comandos Útiles para Recordar

bash
# Siempre útil
git status          # ¿Qué está pasando?
git log --oneline   # ¿Qué he hecho?
git diff            # ¿Qué cambié?

# Para principiantes (¡prueba estos!)
git add . && git commit -m "avance"  # Rápido y sencillo
git push origin main                  # Subir cambios
git pull origin main                  # Traer cambios

🎉 ¡YA SABES POR QUÉ!

  1. git add específico = Para hacer commits organizados por tema

  2. git tag = Para marcar versiones importantes (no solo cambios diarios)

Resumen rápido:

  • Commits = "Hoy hice esto" (cambios diarios)

  • Tags = "¡Esta versión funciona!" (hitos importantes)

¡Ahora ya puedes usar Git como un profesional

Comentarios

Entradas más populares de este blog

02 -Rutas en Laravel

01-04-convencion nombres

3-Rutas