Git: de cero a conflictos
Guía exhaustiva de Git: configuración, comandos esenciales, ramas, remotos, resolución de conflictos paso a paso, comandos avanzados y flujos de trabajo en equipo.
Lo que aprenderás
- Entender el modelo de datos de Git (commits, ramas, HEAD)
- Dominar los comandos del día a día
- Resolver conflictos de merge y rebase con confianza
- Usar comandos avanzados: bisect, reflog, cherry-pick
- Conocer los flujos de trabajo más usados en equipos
¿Qué es Git?
Git es un sistema de control de versiones distribuido creado por Linus Torvalds en 2005 para gestionar el kernel de Linux. Hoy es el estándar de facto en el desarrollo de software.
A diferencia de los sistemas centralizados (SVN, CVS), en Git cada desarrollador tiene una copia completa del historial. Esto significa que puedes trabajar sin conexión, hacer commits localmente y sincronizar cuando quieras.
Conceptos fundamentales
Repositorio
Carpeta que Git gestiona. Contiene todos los archivos y su historial completo.
Commit
Instantánea (snapshot) del estado del proyecto en un momento concreto.
Branch
Línea de desarrollo independiente. La rama principal suele llamarse main o master.
Staging Area
Zona intermedia donde preparas los cambios antes de hacer commit.
HEAD
Puntero que indica en qué commit/rama estás trabajando actualmente.
Remote
Copia del repositorio en un servidor (GitHub, GitLab, Bitbucket…).
Merge
Unir el historial de dos ramas en una sola.
Conflicto
Ocurre cuando dos ramas han modificado la misma parte de un archivo.
El ciclo de vida de un archivo
Los archivos en Git pasan por cuatro estados:
Untracked ──git add──► Staged ──git commit──► Committed
▲ │
└─────git add──────────────┘
(tras modificar)
Modified = archivo trackeado con cambios sin añadir al staging¿Por qué Git y no otro?
Velocidad
Casi todas las operaciones son locales, sin latencia de red.
Integridad
Cada commit tiene un hash SHA-1 único. Nada puede modificarse sin que Git lo detecte.
Ramificación
Crear y cambiar de rama es instantáneo. Fomenta trabajar en ramas por feature.