🌿 ¿Qué es Git?
📖 Definición
Git es un sistema de control de versiones distribuido. Rastrea y gestiona el historial de cambios de código y permite que múltiples desarrolladores trabajen simultáneamente. GitHub, GitLab y Bitbucket son servicios que alojan repositorios Git, facilitando la colaboración y el intercambio de código.
🎯 Comprender con Analogía
Puntos de Guardado de Juego
Piensa en Git como el sistema de guardado de un juego:
- Commit: Guardado del juego - guarda el estado actual
- Branch: Mundo paralelo - probar diferentes opciones mientras mantienes la historia principal
- Merge: Combinar mundos paralelos - aplicar buenos resultados a la historia principal
- Revert: Volver a guardado anterior - recuperar cuando cometes errores
⚙️ Cómo Funciona
Las 3 Áreas de Git
Working Directory (Directorio de trabajo)
↓ git add
Staging Area (Área de preparación)
↓ git commit
Repository (Repositorio)
↓ git push
Remote Repository (Repositorio remoto)
Flujo de Trabajo Git
1. Modificar archivos (Working Directory)
2. Preparar cambios (Staging Area) → git add
3. Crear commit (Local Repository) → git commit
4. Enviar a remoto (Remote Repository) → git push
💡 Ejemplos Reales
Comandos Básicos de Git
# Inicializar repositorio Git
git init
# O clonar repositorio remoto
git clone https://github.com/username/repo.git
# Verificar estado
git status
# Preparar cambios
git add index.html # Archivo específico
git add . # Todos los archivos
# Crear commit
git commit -m "feat: Añadir inicio de sesión de usuario"
# Push (subir)
git push origin main
# Pull (descargar)
git pull origin main
Operaciones con Ramas
# Verificar ramas
git branch
# Crear nueva rama
git branch feature-login
# Cambiar rama
git checkout feature-login
# O crear y cambiar simultáneamente
git checkout -b feature-login
# Método más reciente (Git 2.23+)
git switch feature-login
git switch -c feature-login
# Fusionar rama
git checkout main
git merge feature-login
# Eliminar rama
git branch -d feature-login
Escenario de Colaboración
# === Desarrollador A ===
# 1. Clonar repositorio
git clone https://github.com/team/project.git
# 2. Crear nueva rama de función
git checkout -b feature-payment
# 3. Escribir código y hacer commit
git add .
git commit -m "Implementar función de pago"
# 4. Enviar a remoto
git push origin feature-payment
# 5. Crear Pull Request en GitHub
# === Desarrollador B ===
# 1. Sincronizar código más reciente
git checkout main
git pull origin main
🤔 Preguntas Frecuentes
P1. ¿Cuál es la diferencia entre Git y GitHub?
R:
Git (Herramienta)
├─ Sistema de control de versiones (software)
├─ Funciona en computadora local
├─ Se usa vía línea de comandos (CLI)
└─ Gratis, código abierto
GitHub (Servicio)
├─ Servicio de alojamiento de repositorios Git
├─ Plataforma basada en web
├─ Funciones de colaboración (PR, Issue, Wiki)
└─ Compartir código y código abierto
Analogía: Git = Procesador de texto, GitHub = Google Docs
P2. ¿Cómo escribir mensajes de commit?
R: Sigue convenciones claras y consistentes:
# ✅ Buenos mensajes de commit
git commit -m "feat: Añadir API de inicio de sesión de usuario"
git commit -m "fix: Resolver error de clic en botón de registro"
git commit -m "refactor: Eliminar código duplicado y separar funciones"
# ❌ Malos mensajes de commit
git commit -m "actualizar"
git commit -m "corregido bug"
git commit -m "trabajo en progreso..."
# Reglas de Conventional Commits
feat: Nueva función
fix: Corrección de errores
docs: Cambios en documentación
style: Formato de código
refactor: Refactorización de código
test: Añadir pruebas
chore: Construcción, cambios de configuración
P3. ¿Diferencia entre Merge y Rebase?
R:
# Merge
# - Preserva el historial de ramas tal cual
# - Crea commit de fusión
git checkout main
git merge feature-login
Resultado:
A---B---C---D main
\ /
E-----F feature-login
# Rebase
# - Mueve rama a base diferente
# - Mantiene historial lineal
git checkout feature-login
git rebase main
Resultado:
A---B---C---D main
\
E'---F' feature-login
# ¿Cuándo usar?
Merge: Colaboración en equipo, Pull Request
Rebase: Limpieza de rama personal, historial limpio
P4. ¿Cómo resolver Conflictos?
R:
# Ocurre conflicto
git merge feature-login
# CONFLICT (content): Merge conflict in index.html
# Verificar archivos en conflicto
git status
# Abrir archivo y resolver manualmente
# <h1>Título Final</h1>
# Marcar como resuelto
git add index.html
git commit -m "Merge branch 'feature-login' - resuelto conflicto de título"
# Cancelar fusión si es necesario
git merge --abort
🎬 Resumen
Git es una herramienta esencial para el desarrollo moderno:
- Control de Versiones: Rastrea todo el historial de cambios
- Colaboración: Múltiples desarrolladores trabajan simultáneamente
- Rama: Experimentación segura y desarrollo de funciones
- Recuperación: Volver al estado anterior en cualquier momento
¡Dominar Git permite gestionar código con confianza y colaborar eficientemente en equipo! 🌿✨