¿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
# 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
# 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:
Arreglaste un bug en el controlador
Creaste un nuevo seeder
Actualizaste el README
# 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
| Comando | Qué hace | Cuándo usarlo |
|---|---|---|
git add . | Agrega todos los archivos modificados | Un solo tema de cambio |
git add archivo.php | Agrega solo ese archivo | Varios temas, commits separados |
git add carpeta/ | Agrega todos los archivos en esa carpeta | Varios archivos del mismo tema |
🎯 En el tutorial, usamos git add específico porque:
Enseñamos buenas prácticas desde el principio
Separamos por temas: migración, seeder, modelo, etc.
Facilita entender qué archivos pertenecen a cada parte
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)
# 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)
# 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 Git | Analogía | Ejemplo |
|---|---|---|
| Commits | Fotos diarias del progreso | "Día 1: Coloqué los cimientos" "Día 2: Construí las paredes" "Día 3: Instalé el techo" |
| Tags | Hitos importantes | "¡Casa terminada! (v1.0)" "¡Casa con jardín! (v2.0)" "¡Casa con piscina! (v3.0)" |
📊 Comparación Detallada
| Característica | Commit | Tag |
|---|---|---|
| Propósito | Registrar cambios diarios | Marcar versiones estables |
| Cantidad | Muchos (cientos) | Pocos (3-5 por versión) |
| Formato | feat: agregar filtro | v1.0.0 |
| Visibilidad | Para desarrollo diario | Para lanzamientos oficiales |
| Buscar | git log | git tag |
| Ejemplo | fix: corregir error en validación | v2.0.0 - API REST implementada |
💻 Código de ejemplo
# ==========================================
# 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
# 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
# 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
# ==========================================
# 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
# ✅ 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
# ==========================================
# 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í)
# 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)
# 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?
Sí, 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?
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?
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
# 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É!
git addespecífico = Para hacer commits organizados por temagit 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
Publicar un comentario