# 🔄 Recuperar Archivos Protegidos Después de Pull

## ⚠️ Problema

Si hiciste `git pull` **ANTES** de actualizar el `.gitattributes`, los archivos protegidos (`config/cd-system.php` y `config/site.php`) pueden haberse sobrescrito.

## ✅ Solución: Recuperar desde el Commit Anterior

### Opción 1: Recuperar desde HEAD~1 (Commit Anterior al Pull)

```bash
# Ver el commit anterior
git log --oneline -3

# Recuperar config/cd-system.php desde antes del pull
git checkout HEAD~1 -- config/cd-system.php

# Recuperar config/site.php desde antes del pull
git checkout HEAD~1 -- config/site.php

# Verificar que se recuperaron
cat config/cd-system.php | grep "demo"
cat config/site.php | grep -A 2 "'name'"

# Commitear la recuperación
git add config/cd-system.php config/site.php
git commit -m "fix: Restaurar archivos protegidos después de pull"
```

### Opción 2: Recuperar desde un Commit Específico

```bash
# Ver historial para encontrar el commit correcto
git log --oneline --all -10

# Recuperar desde un commit específico (reemplaza COMMIT_HASH)
git checkout COMMIT_HASH -- config/cd-system.php
git checkout COMMIT_HASH -- config/site.php

# Commitear
git add config/cd-system.php config/site.php
git commit -m "fix: Restaurar archivos protegidos desde commit específico"
```

### Opción 3: Usar git show para Ver y Restaurar

```bash
# Ver el contenido del archivo antes del pull
git show HEAD~1:config/cd-system.php

# Si es correcto, restaurarlo
git show HEAD~1:config/cd-system.php > config/cd-system.php
git show HEAD~1:config/site.php > config/site.php

# Verificar y commitear
git add config/cd-system.php config/site.php
git commit -m "fix: Restaurar archivos protegidos"
```

---

## 🚀 Proceso Completo Recomendado

```bash
# 1. Ver qué cambió
git diff HEAD~1 HEAD -- config/cd-system.php config/site.php

# 2. Recuperar archivos
git checkout HEAD~1 -- config/cd-system.php
git checkout HEAD~1 -- config/site.php

# 3. Verificar
cat config/cd-system.php | grep "demo"
cat config/site.php | grep -A 2 "'name'"

# 4. Actualizar .gitattributes (IMPORTANTE para futuros pulls)
# Copiar el contenido nuevo del .gitattributes optimizado

# 5. Commitear todo
git add config/cd-system.php config/site.php .gitattributes
git commit -m "fix: Restaurar archivos protegidos y actualizar .gitattributes"
```

---

## ✅ Después de Recuperar

### 1. Actualizar .gitattributes (IMPORTANTE)

```bash
# Editar .gitattributes con el contenido optimizado
nano .gitattributes
```

**Contenido a copiar:**

```gitattributes
# Auto detect text files and perform LF normalization
* text=auto

# ============================================
# Archivos protegidos del proyecto
# Estos archivos mantienen la identidad del proyecto y NO deben ser sobrescritos
# durante merges o pulls desde cd-system. Se usa estrategia "ours" para mantener
# siempre la versión del proyecto.
# ============================================

# Configuración del proyecto
config/cd-system.php merge=ours
config/site.php merge=ours

# Logos del proyecto
public/cd-project/img/logos/** merge=ours
public/cd-project/img/logos/* merge=ours

# Favicons del proyecto
public/cd-project/img/favicon/** merge=ours
public/cd-project/img/favicon/* merge=ours

# Assets temporales/backup del proyecto
public/cd-project/assets/** merge=ours
public/cd-project/assets/* merge=ours

# Skins CSS personalizados del proyecto (si existen)
# NOTA: Los skins del demo (skin-architecture-2.css, skin-law-firm-2.css, etc.)
# NO deben protegerse, solo los personalizados del proyecto
# Si tu proyecto tiene un skin personalizado, descomenta y ajusta la línea:
# public/template/css/skins/skin-mi-proyecto.css merge=ours
```

### 2. Commitear .gitattributes

```bash
git add .gitattributes
git commit -m "chore: Actualizar .gitattributes con protecciones optimizadas"
```

### 3. Verificar que Todo Está Correcto

```bash
# Verificar protecciones
cat .gitattributes | grep "merge=ours" | wc -l
# Debe mostrar al menos 6

# Verificar archivos recuperados
cat config/cd-system.php | grep "demo"
cat config/site.php | grep -A 2 "'name'"
```

---

## 🔍 Verificar Qué se Perdió

```bash
# Ver diferencias entre antes y después del pull
git diff HEAD~1 HEAD -- config/cd-system.php config/site.php

# Ver el estado actual
git status
```

---

## ⚠️ Prevención para el Futuro

**SIEMPRE actualizar `.gitattributes` ANTES de hacer pull:**

1. ✅ Actualizar `.gitattributes` primero
2. ✅ Commitear `.gitattributes`
3. ✅ Luego hacer `git pull`

---

**Última actualización:** Diciembre 2024

