Operaciones Básicas con Ramas de Git

GitBeginner
Practicar Ahora

Introducción

¡Bienvenido de nuevo, viajero del tiempo! ¡Ahora vamos a llevar tus habilidades de viaje temporal al siguiente nivel con las ramas de Git!

Imagina que pudieras crear universos alternativos para tu proyecto, donde pudieras experimentar con ideas locas sin arruinar tu línea de tiempo principal. ¡Eso es exactamente lo que te permiten hacer las ramas de Git! Son como dimensiones paralelas para tu código, donde puedes desarrollar nuevas funciones, corregir errores o probar experimentos arriesgados sin miedo.

Al final de esta práctica, serás un maestro del multiverso, capaz de crear nuevas realidades (ramas), saltar entre ellas (checkout o switch), combinarlas (merge) e incluso eliminar universos que ya no necesites. Estos superpoderes son esenciales para cualquier desarrollador que viaje en el tiempo, ya sea que trabajes solo o como parte de un equipo de programadores que saltan entre dimensiones.

¿Estás listo para convertirte en un mago de las ramas de Git? ¡Comencemos!

Este es un Laboratorio Guiado, que proporciona instrucciones paso a paso para ayudarte a aprender y practicar. Sigue las instrucciones cuidadosamente para completar cada paso y ganar experiencia práctica. Los datos históricos muestran que este es un laboratorio de nivel principiante con una tasa de finalización del 94%. Ha recibido una tasa de valoraciones positivas del 100% por parte de los alumnos.

Configuración de tu Centro Multiversal

Primero, necesitamos crear un centro de control para todas nuestras realidades alternativas. Este será nuestro repositorio principal de Git.

  1. Abre tu terminal. Este es tu panel de control para saltar entre dimensiones.

  2. Dirígete a tu espacio de proyectos:

cd ~/project

Este comando cambia tu directorio actual a la carpeta "project" en tu directorio personal. Si alguna vez no estás seguro de dónde te encuentras, puedes usar el comando pwd para mostrar tu directorio de trabajo actual. Este es un truco útil para recordar si alguna vez te pierdes en la terminal.

  1. Vamos a crear una nueva carpeta para nuestros experimentos multiversales:
mkdir git-branch-lab
cd git-branch-lab

El comando mkdir crea un nuevo directorio y luego usamos cd para entrar en él. Esto nos da un lienzo en blanco para trabajar. Piensa en esta nueva carpeta como la sala de control de nuestra operación de viaje en el tiempo.

  1. Ahora, inicialicemos nuestro centro (repositorio de Git):
git init

Este comando crea un nuevo repositorio de Git en el directorio actual. Configura todos los archivos necesarios que Git necesita para empezar a rastrear tu proyecto. Estos archivos están ocultos en una carpeta llamada .git.

Deberías ver un mensaje como este:

Initialized empty Git repository in /home/labex/project/git-branch-lab/.git/

¡Felicidades! ¡Acabas de crear un centro para infinitas posibilidades! Esta es la base sobre la cual se construirán todas tus aventuras de viaje en el tiempo.

  1. Vamos a crear una nota para nuestro "yo" del futuro explicando qué es este lugar:
echo "## Git Branch Lab" > README.md
echo "This is my hub for multiversal Git branch experiments" >> README.md

Esto es lo que hacen estos comandos:

  • El primer comando crea un nuevo archivo llamado README.md y escribe "## Git Branch Lab" en él. En Markdown, el símbolo '#' crea un encabezado. Este archivo actuará como el manual de usuario de nuestro centro del multiverso.
  • El segundo comando añade otra línea a README.md. El símbolo '>>' significa "añadir esto al final del archivo". Estamos agregando algunos detalles a nuestro manual de usuario.

Si tienes curiosidad sobre lo que acabas de crear, puedes usar el comando cat README.md para ver el contenido del archivo. Este comando es como leer el manual de usuario de nuestro centro multiversal.

  1. Ahora, hagamos nuestro primer punto de guardado (commit) en este nuevo universo:
git add README.md
git commit -m "Initial commit: Create the multiverse hub"

Analicemos esto:

  • git add README.md le dice a Git que comience a rastrear los cambios en README.md. Esto prepara el archivo para el commit (fase de "staging"). Piensa en el staging como preparar el archivo para el viaje.
  • git commit crea un nuevo commit (punto de guardado) con los cambios preparados. Esto es como tomar una instantánea de nuestro universo actual.
  • La bandera -m te permite proporcionar un mensaje de commit directamente. ¡Intenta siempre escribir mensajes de commit claros y descriptivos! Este mensaje es como una nota que explica qué cambiamos en esta instantánea.

Si alguna vez no estás seguro de qué se ha preparado o guardado, puedes usar git status para verificarlo. Es como comprobar el estado de nuestro equipo de viaje en el tiempo.

Creando tu Primera Realidad Alternativa

Ahora que tenemos nuestro universo principal (rama master) configurado, ¡vamos a crear nuestra primera realidad alternativa!

  1. Crea una nueva rama llamada feature-dimension:
git branch feature-dimension

Este comando crea una nueva rama, pero aún no te cambia a ella. Piensa en ello como crear un nuevo universo paralelo, pero tú sigues en el original. Es como tener los planos de una nueva realidad, pero aún no has entrado en ella.

Acabas de crear una nueva línea de tiempo, pero no estás en ella todavía. Veamos todas las líneas de tiempo que tenemos:

git branch

Deberías ver:

  feature-dimension
* master

El asterisco * muestra en qué realidad te encuentras actualmente. En este momento, todavía estás en el universo principal (master). La rama master es la rama por defecto que Git crea cuando inicializas un nuevo repositorio.

Consejos: Presiona q para salir de la lista de ramas y volver a tu terminal.

  1. Saltemos a nuestra nueva realidad:
git checkout feature-dimension

Este comando hace dos cosas:

  1. Cambia tu directorio de trabajo actual a la rama feature-dimension.
  2. Actualiza los archivos en tu directorio de trabajo para que coincidan con el estado de la rama feature-dimension. Es como atravesar un portal hacia la nueva realidad.

Ahora, si ejecutas git branch de nuevo, verás:

* feature-dimension
  master

¡El * se ha movido, indicando que has saltado con éxito a tu nueva dimensión! Ahora estás trabajando en esta realidad alternativa.

Alternativamente, puedes usar git switch feature-dimension para lograr el mismo resultado. git switch es un comando más nuevo introducido en Git 2.23 que está diseñado específicamente para cambiar de rama, haciéndolo más claro e intuitivo. Ambos comandos logran el mismo resultado, pero generalmente se prefiere git switch por su claridad.

No te preocupes si aún no ves ningún cambio en tus archivos. Cuando creas una nueva rama, comienza como una copia exacta de la rama en la que estabas. ¡La parte emocionante viene cuando empezamos a hacer cambios! Estas copias iniciales aseguran que cada realidad comience con la misma base.

Consejo profesional: En versiones más recientes de Git, puedes crear una nueva rama y saltar a ella en un solo comando: git checkout -b feature-dimension o git switch -c feature-dimension. ¡Es como crear y atravesar un portal en un solo movimiento rápido! El uso de -b con git checkout o -c con git switch combina la creación y el cambio de rama en un solo paso.

Si alguna vez te pierdes y no recuerdas en qué dimensión (rama) estás, simplemente ejecuta git branch de nuevo. La rama con el * es tu ubicación actual. Es como consultar tu ubicación en un mapa del multiverso.

Dando Forma a tu Nueva Realidad

Ahora que estamos en nuestra nueva dimensión, hagamos algunos cambios que solo existan aquí. Recuerda, lo que hagamos aquí no afectará a nuestro universo principal hasta que decidamos fusionarlos. Esto nos permite experimentar de forma segura sin alterar nuestra línea de tiempo principal.

  1. Vamos a crear un nuevo artefacto en esta realidad:
echo "This is a powerful artifact from another dimension" > dimensional-artifact.txt

Este comando crea un nuevo archivo llamado dimensional-artifact.txt y escribe un mensaje en él. El símbolo > se utiliza para crear un archivo nuevo (o sobrescribir uno existente) con el contenido proporcionado. Este artefacto es único de nuestra realidad actual.

  1. Ahora, preservemos este artefacto en nuestra línea de tiempo:
git add dimensional-artifact.txt
git commit -m "Create a powerful interdimensional artifact"

Estos comandos deberían resultarte familiares del Paso 1. Le estamos diciendo a Git que rastree nuestro nuevo archivo y luego creamos un punto de guardado con un mensaje descriptivo. Estos comandos son como tomar una fotografía del artefacto recién descubierto.

  1. Actualicemos también nuestra nota para el futuro sobre esta nueva realidad:
echo "##### Feature Dimension" >> README.md
echo "We've discovered a powerful artifact in this reality" >> README.md

Estos comandos añaden nuevas líneas a nuestro archivo README.md. El símbolo >> añade al final de un archivo existente en lugar de sobrescribirlo. Estamos actualizando nuestro manual de usuario para reflejar nuestros descubrimientos en la nueva dimensión.

  1. Guardemos también estos cambios:
git add README.md
git commit -m "Document the discovery of the artifact"

Nuevamente, estamos creando otro punto de guardado, esta vez para nuestro archivo README.md actualizado. Estamos preservando la documentación actualizada para nuestro "yo" futuro.

¡Buen trabajo! Ahora has realizado cambios en tu realidad alternativa. Estos cambios existen solo en la rama feature-dimension por ahora. Si volvieras a la rama master, no verías estos cambios allí. Esta separación garantiza que nuestra experimentación en una realidad no afecte a las demás.

Para ver la diferencia entre tu rama actual y la rama master, puedes usar el comando git diff master. Esto te mostrará todos los cambios que has realizado en tu realidad actual en comparación con la línea de tiempo principal. Es como comparar el estado de los dos universos.

Fusionando Realidades

Ahora que hemos realizado descubrimientos asombrosos en nuestra realidad alternativa, es hora de traerlos de vuelta a nuestro universo principal. Este proceso se llama fusión (merge).

  1. Primero, regresemos a nuestra realidad principal:
git checkout master

o

git switch master

Ambos comandos nos devuelven a la rama master.

  • git checkout es el comando antiguo para cambiar de rama. Ha existido desde los inicios de Git y todavía es compatible.
  • git switch es el comando más nuevo introducido en Git 2.23. Está diseñado para ser más intuitivo y fácil de entender.

Puedes usar cualquiera de los dos comandos para cambiar de rama, pero generalmente se prefiere git switch por su claridad.

Si miras tus archivos ahora, ¡notarás que tu artefacto interdimensional ha desaparecido! No te preocupes, está a salvo en la otra dimensión. Esto demuestra que los cambios en una rama están aislados de otras ramas hasta que se fusionan.

  1. Ahora, fusionemos nuestra realidad alternativa en la línea de tiempo principal:
git merge feature-dimension

Este comando le dice a Git que tome todos los cambios de feature-dimension y los aplique a master. Es como integrar los descubrimientos de nuestra realidad alternativa en nuestro universo principal.

Deberías ver un mensaje como este:

Updating <hash1>..<hash2>
Fast-forward
 README.md              | 2 ++
 dimensional-artifact.txt | 1 +
 2 files changed, 3 insertions(+)
 create mode 100644 dimensional-artifact.txt

Esta salida te indica qué archivos cambiaron y cuántas líneas se añadieron o eliminaron. "Fast-forward" significa que Git pudo simplemente mover la rama master hacia adelante hasta donde estaba feature-dimension, porque no hubo cambios conflictivos. Una fusión de tipo fast-forward es el tipo más simple de fusión y ocurre cuando la rama en la que estás fusionando no ha cambiado desde que se creó la rama de origen.

¡Felicidades! ¡Acabas de combinar dos realidades! Los cambios que hicimos en feature-dimension ahora forman parte de nuestro universo principal. Nuestro artefacto interdimensional y la documentación actualizada están ahora presentes en nuestra rama master.

  1. Confirmemos que nuestro artefacto sobrevivió a la fusión:
cat dimensional-artifact.txt
cat README.md

Estos comandos mostrarán el contenido de los archivos. Deberías ver los cambios que hicimos en la feature-dimension. Estos comandos verifican que la fusión fue exitosa.

Has traído con éxito tus descubrimientos de una realidad alternativa a la línea de tiempo principal. ¡Así es como los desarrolladores incorporan nuevas funciones a su proyecto principal! Este es un concepto central en Git que permite a los desarrolladores trabajar en funciones de forma aislada e integrarlas en el código base principal cuando están listas.

Si quieres ver una lista de todas las ramas que se han fusionado en tu rama actual, puedes usar el comando git branch --merged. Esto puede ser útil para rastrear qué ramas ya han sido integradas.

Cerrando Portales Dimensionales

Ahora que hemos traído con éxito nuestros descubrimientos a la realidad principal, podemos cerrar el portal a nuestra dimensión alternativa. En términos de Git, eliminaremos la rama que ya no necesitamos.

  1. Cerremos nuestro portal feature-dimension:
git branch -d feature-dimension

La bandera -d le dice a Git que elimine la rama, pero solo si se ha fusionado completamente. Es una medida de seguridad para evitar la pérdida accidental de cambios no fusionados. Git solo te permitirá eliminar una rama usando -d si los cambios en ella se han fusionado con la rama en la que te encuentras.

Si intentas eliminar una rama que no se ha fusionado por completo, Git te dará una advertencia. En tales casos, si estás absolutamente seguro de que quieres eliminar la rama, puedes usar la bandera -D en su lugar: git branch -D feature-dimension. Esto fuerza la eliminación de la rama independientemente de su estado de fusión. ¡Ten cuidado con este poder! Este comando solo debe usarse cuando estés totalmente seguro de que no necesitas los cambios de esa rama.

  1. Comprobemos qué realidades existen todavía:
git branch

Ahora solo deberías ver la rama master. Esto indica que el portal a la feature-dimension está cerrado.

Limpiar las ramas antiguas mantiene tu multiverso organizado. Es un buen hábito cerrar portales a dimensiones que ya no necesitas, especialmente cuando trabajas en proyectos grandes con muchas realidades alternativas. Esto mantiene tu espacio de trabajo limpio y evita confusiones.

Si alguna vez quieres ver todas las ramas, incluidas las ramas remotas, puedes usar git branch -a. Esto puede ser útil cuando trabajas en proyectos con múltiples colaboradores. Las ramas remotas son copias de ramas que se encuentran en otros repositorios.

Resumen

¡Felicidades, maestro del multiverso! Acabas de completar tu curso intensivo de magia con ramas de Git. Repasemos las increíbles hazañas que has logrado:

  1. Creaste un centro para infinitas posibilidades (un nuevo repositorio de Git).
  2. Abriste un portal a una realidad alternativa (creaste una nueva rama).
  3. Aprendiste a saltar entre diferentes dimensiones (cambiar de rama usando git checkout o git switch).
  4. Realizaste descubrimientos innovadores en un universo paralelo (hiciste commits en una rama separada).
  5. Fusionaste dos realidades, trayendo tus descubrimientos a la línea de tiempo principal (fusionaste ramas).
  6. Finalmente, aprendiste cómo cerrar portales dimensionales que ya no necesitas (eliminar ramas).

Estas habilidades multiversales son cruciales para cualquier desarrollador que viaje en el tiempo. Al usar ramas, puedes:

  • Trabajar en diferentes funciones o correcciones de errores en universos paralelos, sin alterar la línea de tiempo principal.
  • Experimentar con ideas locas en realidades alternativas seguras.
  • Colaborar con otros desarrolladores que saltan entre dimensiones, cada uno trabajando en su propia realidad.
  • Mantener tu línea de tiempo principal estable y libre de fallos, fusionando nuevas funciones solo cuando estén listas.

¡Feliz salto entre dimensiones, y que tus fusiones estén siempre libres de conflictos!