Operaciones Básicas de Ramas en Git

GitGitBeginner
Practicar Ahora

💡 Este tutorial está traducido por IA desde la versión en inglés. Para ver la versión original, puedes hacer clic aquí

Introducción

¡Bienvenido de nuevo, viajero del tiempo! Ahora, vamos a llevar tus habilidades de viaje en el tiempo al siguiente nivel con las ramas (branches) de Git.

Imagina que pudieras crear universos alternativos para tu proyecto, donde puedas 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 funcionalidades, corregir errores o probar experimentos locos sin temor.

Al final de este laboratorio (lab), 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 viajero del tiempo, ya sea que trabajes solo o como parte de un equipo de programadores que saltan entre dimensiones.

¿Estás listo para convertirse en un mago de las ramas de Git? ¡Adentrémonos!


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL git(("Git")) -.-> git/SetupandConfigGroup(["Setup and Config"]) git(("Git")) -.-> git/BasicOperationsGroup(["Basic Operations"]) git(("Git")) -.-> git/BranchManagementGroup(["Branch Management"]) git/SetupandConfigGroup -.-> git/init("Initialize Repo") git/BasicOperationsGroup -.-> git/add("Stage Files") git/BasicOperationsGroup -.-> git/commit("Create Commit") git/BranchManagementGroup -.-> git/branch("Handle Branches") git/BranchManagementGroup -.-> git/checkout("Switch Branches") git/BranchManagementGroup -.-> git/merge("Merge Histories") git/BranchManagementGroup -.-> git/log("Show Commits") subgraph Lab Skills git/init -.-> lab-385163{{"Operaciones Básicas de Ramas en Git"}} git/add -.-> lab-385163{{"Operaciones Básicas de Ramas en Git"}} git/commit -.-> lab-385163{{"Operaciones Básicas de Ramas en Git"}} git/branch -.-> lab-385163{{"Operaciones Básicas de Ramas en Git"}} git/checkout -.-> lab-385163{{"Operaciones Básicas de Ramas en Git"}} git/merge -.-> lab-385163{{"Operaciones Básicas de Ramas en Git"}} git/log -.-> lab-385163{{"Operaciones Básicas de Ramas en Git"}} end

Configurando tu Centro Multiversal

Primero, necesitamos crear un centro central para todas nuestras realidades alternativas. Este será nuestro repositorio (repository) Git principal.

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

  2. Navega hasta tu espacio de proyecto:

cd ~/project

Este comando cambia tu directorio actual al directorio "project" en tu directorio de inicio. Si alguna vez no estás seguro de dónde estás, puedes usar el comando pwd para imprimir 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 movernos a él. Esto nos da una pizarra 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, vamos a inicializar nuestro centro (repositorio Git):
git init

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

Deberías ver un mensaje como:

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 futuro explicando de qué se trata 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 multiversal.
  • El segundo comando agrega otra línea al archivo README.md. El '>>' significa "agregar esto al final del archivo". Estamos agregando algunos detalles a nuestro manual de usuario.

Si estás curioso 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, vamos a hacer nuestro primer punto de guardado (commit) en este nuevo universo:
git add README.md
git commit -m "Initial commit: Create the multiverse hub"

Desglosemos esto:

  • git add README.md le dice a Git que comience a seguir los cambios en README.md. Esto prepara el archivo para el commit. Piensa en la preparación (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. Siempre intenta escribir mensajes de commit claros y descriptivos. Este mensaje es como una nota que explica lo que cambiamos en esta instantánea.

Si alguna vez no estás seguro de qué se ha preparado o confirmado, puedes usar git status para comprobar. Esto 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 (branch) llamada feature-dimension:
git branch feature-dimension

Este comando crea una nueva rama, pero aún no cambia a ella. Piensa en ello como crear un nuevo universo paralelo, pero todavía estás en el original. Es como tener un plano para una nueva realidad, pero aún no has entrado en ella.

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

git branch

Deberías ver:

  feature-dimension
* master

El * 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 predeterminada que Git crea cuando se inicializa un nuevo repositorio.

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

  1. ¡Vamos a saltar 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, lo que muestra que has saltado exitosamente a tu nueva dimensión. Ahora estás trabajando en esta realidad alternativa.

Como alternativa, 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á específicamente diseñado para cambiar de rama, lo que lo hace más claro e intuitivo. Ambos comandos logran el mismo resultado, pero git switch generalmente se prefiere por su claridad.

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

Consejo profesional: En versiones más nuevas de Git, puedes crear una nueva rama y saltar a ella con 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 ágil. Usar -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) te encuentras, simplemente ejecuta git branch de nuevo. La rama con el * es tu ubicación actual. Es como comprobar tu ubicación en un mapa del multiverso.

Dar Forma a Tu Nueva Realidad

Ahora que estamos en nuestra nueva dimensión, hagamos algunos cambios que solo existan aquí. Recuerda, todo lo que hagamos aquí no afectará a nuestro universo principal hasta que decidamos fusionarlos. Esto nos permite experimentar de forma segura sin perturbar 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 nuevo archivo (o sobrescribir uno existente) con el contenido dado. Este artefacto es único para nuestra realidad actual.

  1. Ahora, vamos a preservar 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 ser familiares desde el Paso 1. Le estamos diciendo a Git que siga nuestro nuevo archivo y luego creamos un punto de guardado con un mensaje descriptivo. Estos comandos son como tomar una instantánea del artefacto recién descubierto.

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

Estos comandos están agregando nuevas líneas a nuestro archivo README.md. El símbolo >> agrega contenido a un archivo existente en lugar de sobrescribirlo. Estamos actualizando nuestro manual de usuario para reflejar nuestros descubrimientos en la nueva dimensión.

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

Una vez más, 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 solo existen en la rama feature-dimension por ahora. Si volvieras a cambiar a la rama master, no verías estos cambios allí. Esta separación asegura que nuestra experimentación en una realidad no afecte a las otras.

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. Esto es como comparar el estado de los dos universos.

Fusionando Realidades

Ahora que hemos hecho 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, volvamos a nuestra realidad principal:
git checkout master

o

git switch master

Ambos comandos nos devuelven a la rama master.

  • git checkout es el comando más antiguo para cambiar de ramas. Existe desde los primeros días de Git y todavía está soportado.
  • 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 comandos para cambiar de ramas, pero git switch generalmente se prefiere por su claridad.

Si miras tus archivos ahora, notarás que tu artefacto interdimensional ha desaparecido. No te preocupes, está seguro 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:

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 dice qué archivos se cambiaron y cuántas líneas se agregaron o eliminaron. "Fast-forward" significa que Git pudo simplemente avanzar la rama master hasta donde estaba feature-dimension, porque no hubo cambios conflictivos. Una fusión "fast-forward" es el tipo más simple de fusión y ocurre cuando la rama en la que se está fusionando no ha cambiado desde que se creó la rama de la que se está fusionando.

¡Felicidades! Acabas de combinar dos realidades. Los cambios que hicimos en feature-dimension ahora son parte de nuestro universo principal. Nuestro artefacto interdimensional y la documentación actualizada ahora están 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 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 funcionalidades a su proyecto principal. Este es un concepto fundamental en Git que permite a los desarrolladores trabajar en funcionalidades de forma aislada y luego integrarlas en la base de código 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 se han integrado.

Cerrando Portales Dimensionales

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

  1. Vamos a cerrar nuestro portal de 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 a la rama en la que te encuentras.

Si intentas eliminar una rama que no se ha fusionado completamente, 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 absolutamente seguro de que no necesitas los cambios en la rama.

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

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

Limpiar las ramas antiguas mantiene tu multiverso organizado. Es una buena práctica cerrar los portales a las dimensiones que ya no necesitas, especialmente cuando trabajas en proyectos más grandes con muchas realidades alternativas. Esto mantiene tu espacio de trabajo limpio y evita la confusión.

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

Resumen

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

  1. Creaste un centro de posibilidades infinitas (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 ramas usando git checkout o git switch).
  4. Hiciste descubrimientos revolucionarios en un universo paralelo (confirmaste cambios en una rama separada).
  5. Fusionaste dos realidades, llevando tus descubrimientos a la línea de tiempo principal (fusionaste ramas).
  6. Finalmente, aprendiste cómo cerrar los portales dimensionales que ya no necesitas (eliminar ramas).

Estas habilidades multiversales son cruciales para cualquier desarrollador viajero del tiempo. Al usar ramas, puedes:

  • Trabajar en diferentes funcionalidades o correcciones de errores en universos paralelos, sin perturbar la línea de tiempo principal.
  • Experimentar con ideas audaces en realidades alternativas seguras.
  • Colaborar con otros desarrolladores viajeros de dimensiones, cada uno trabajando en su propia realidad.
  • Mantener tu línea de tiempo principal estable y sin fallas, fusionando nuevas funcionalidades solo cuando estén listas.

¡Que disfrutes saltando de dimensiones y que tus fusiones siempre estén libres de conflictos!