Cuando empiezas a trabajar en proyectos con código, solo o en equipo, pronto te encuentras con un detalle: ¿cómo sigues el rastro de los cambios sin que todo sea un caos? Aquí entra Git, tu salvavidas. Piensa en Git como un rompecabezas gigante (el repo) donde cada uno arma su parte (rama) sin desordenar el diseño principal. Cuando tus piezas están listas (commit), las sumas al tablero compartido (push), Git se encarga de encajar las piezas sin que haya conflictos, y si los hay, te avisa para que los ajustes manualmente. Es un sistema de control de versiones que te deja rastrear cada cambio, trabajar junto a otros sin imponerse al trabajo de los demás y hasta retroceder si algo falla.
Antes de iniciar en los comandos, aquí van los conceptos clave para que no te pierdas:
- Repositorio (o repo): Donde se guarda todo el historial del proyecto.
- Rama: Un espacio aparte para probar o crear sin tocar el historial principal.
- Commit: Guardar tus cambios con un mensaje que dice qué hiciste.
- Área de preparación (staging area): Donde preparas lo que vas a guardar.
Recuerda que Git lo usas en tu computadora de manera local, pero en sitios como GitHub o GitLab, que son como un deposito online repositorios, los usas para compartir tu trabajo y colaborar con otros.
1. Configuración Inicial
Antes de comenzar a trabajar con Git, es fundamental configurarlo con tus datos de usuario. Esto garantiza que cada commit esté asociado a la persona que realizó el cambio. Además, se recomienda verificar que Git esté correctamente instalado.
Para configurar tu nombre y correo, ejecuta:
git config --global user.name "Tu Nombre"
git config --global user.email "[email protected]"
Verifica la instalación de Git con:
git --version
2. Comandos Básicos de Git
2.1 Clonación de Repositorios
Si te interesó un proyecto desde un sitio como GitHub, para bajarlo a tu computador, usa git clone:
git clone https://github.com/usuario/repositorio.git
2.2 Gestión de Ramas
Las ramas te permiten trabajar en un espacio separado sin afectar la versión principal del proyecto.
- Crear una nueva rama:
git branch nueva-rama
- Cambiar de rama:
En documentación reciente, verás git switch como la forma sugerida de saltar entre ramas:
git switch nueva-rama
Yo sigo usando git checkout por costumbre:
git checkout nueva-rama
Ambos comandos funcionan bien, switch es más claro e intuitivo, pero no hay problema si prefieres seguir usando el clásico checkout.
2.3 Estado del Repositorio
Para ver el estado de los archivos y detectar cambios pendientes, o si es el caso, también indica si hay archivos sin seguimiento. Se utiliza:
git status
2.4 Preparar Cambios
Antes de guardar, indica qué cambios van al área de preparación:
- Para añadir un archivo específico:
git add archivo.txt
- Para añadir todos los archivos modificados:
git add .
2.5 Deshacer cambios antes de confirmar
Te diste cuenta que necesitas revertir un cambio en tu espacio de trabajo, sin borrar cambios en el archivo:
git restore --staged archivo.txt
O en otro caso quieres descartar completamente los cambios en el archivo, puedes usar:
git restore archivo.txt
2.6 Confirmar Cambios
Una vez preparados los cambios, se confirma el commit con:
git commit -m "Descripción del cambio"
2.7 Sincronización con Repositorios Remotos
- Subir cambios al repositorio remoto:
git push origin main
- Descargar e integrar cambios remotos:
git pull origin main
Toma en cuenta que git pull fusiona automáticamente los cambios remotos. Si solo deseas descargarlos para revisarlos antes, puedes usar:
git fetch origin
3. Comandos Avanzados
3.1 Revertir Cambios
Si necesitas deshacer un commit, Git ofrece la opción de revertir los cambios:
git revert <commit-hash>
Toma en cuenta que revert crea un nuevo commit que revierte el anterior en lugar de modificar el historial.
3.2 Fusión de Ramas
Para integrar los cambios de una rama en otra, puedes utilizar la fusión (merge):
git merge feature-rama
4. Caso Práctico: Resolución de Conflictos en un Merge
4.1 Escenario
Imagina que tienes dos ramas: main y feature-navbar. Ambas ramas contienen cambios en el mismo archivo, por ejemplo, index.html.
4.2 Generación del Conflicto
Al intentar fusionar feature-navbar en main:
git checkout main
git merge feature-navbar
Git detectará las diferencias que tienen conflicto y detendrá la fusión, indicando que existen conflictos.
4.3 Identificación del Conflicto
Para identificar los archivos en conflicto, utiliza:
git status
Luego, al abrir index.html, encontrarás secciones marcadas de la siguiente manera:
<<<<<<< HEAD
<!-- Cambios en main -->
=======
<!-- Cambios en feature-navbar -->
>>>>>>> feature-navbar
4.4 Resolución del Conflicto
Para resolver el conflicto, edita manualmente el archivo combinando los cambios que deseas conservar. Una vez resuelto, elimina los marcadores conflictivos (<<<<<<<, =======, >>>>>>), guarda el archivo y añade la versión corregida al área de preparación:
git add index.html
Finaliza la fusión confirmando los cambios:
git commit -m "Resuelve conflictos entre main y feature-navbar"
5. Conclusión
Con esta guía ya manejas lo esencial de Git: configurarlo, trabajar con repos, ramas y commits, y hasta resolver conflictos como experto. Saber manejar esos enredos es fundamental para que todo fluya, sobre todo en equipo.
Si quieres ir más allá, la documentación oficial y recursos online están llenos de trucos para seguir aprendiendo.
Conocer Git te da control de tu código y simplifica trabajar en equipo. Practica un poco más y verás cómo todo fluye fácil; dejarás de solo sobrevivir para convertirte en el rey de tus repos. ¡Sigue codificando y explorando la potencia de GIT!. Sigamos codificando.
Deja una respuesta