Fusión de Git Simplificada: Fusionando Ramas Como un Experto

Fusionar ramas en Git a veces puede ser una tarea desalentadora, pero el comando git merge simplifica significativamente el proceso. En este tutorial, aprenderás los conceptos básicos de combinar ramas usando git merge, junto con GitHub, una herramienta líder de gestión de proyectos.

Comencemos este viaje al mundo de Git y GitHub, centrándonos en el poderoso comando git merge.

Prerrequisitos para Dominar Git Merge

Antes de adentrarte en las complejidades de git merge, asegúrate de tener la siguiente configuración:

  • Git (Versión 2.25.1 utilizada en este tutorial) – Descárgalo desde el sitio oficial de Git.
  • A GitHub account – Sign up at GitHub.
  • Una máquina Ubuntu (Se utiliza Ubuntu 20.04 aquí, pero cualquier sistema operativo con Git será suficiente).

Inicializando un Proyecto para Git Merge

Para usar efectivamente git merge, primero necesitas un proyecto Git. Vamos a configurar un proyecto de demostración para practicar.

1. Comienza creando un nuevo directorio llamado ~/git-demo y navega hacia él:

mkdir git-demo && cd git-demo

2. Crea un archivo index.html en el directorio ~/git-demo con el siguiente contenido. Este archivo HTML básico muestra un mensaje sobre empezar con git merge.

<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Git Merge Demo</title>
</head>
<body>
    <h4>Let's get started with git merge</h4>
</body>
</html>

3. Inicializa un nuevo repositorio Git en tu directorio de proyecto:

El comando git init se utiliza para convertir un proyecto existente y no versionado en un repositorio Git o para iniciar un nuevo proyecto con Git.

git init
Initializing a Git repository for git merge

4. Confirma la creación de la carpeta .git en el directorio de tu proyecto. Esta carpeta es donde Git realiza un seguimiento de los cambios:

ls -la
Verifying the existence of the GIT repository in the directory.

5. Implementa el comando git add para preparar tus cambios en el proyecto. Al preparar el archivo index.html para el próximo commit en el flujo de trabajo de Git.

git add index.html

6. Utiliza git status para confirmar que tu archivo está correctamente preparado. Este comando proporciona una instantánea del estado actual de tu directorio de trabajo.

git status
Confirming the staging of changes for git merge.

7. A continuación, realiza tu commit con git commit. Este comando guarda tus cambios preparados en el repositorio local, marcando un paso significativo en tu historial de versiones.

git commit -m "initial commit"
Executing the initial commit in preparation for git merge.

Configura tu identidad en Git con: git config --global user.email "[email protected]" y git config --global user.name "Tu Nombre" si estás utilizando Git por primera vez.

8. Revisa tu historial de commits con git log. Este comando te ayuda a realizar un seguimiento de los cambios y es vital al prepararte para un git merge.

git log
Checking commit history before performing git merge.

9. Confirma la existencia de ramas en tu repositorio con git branch. Este paso es crucial antes de realizar un git merge.

Nota: La rama predeterminada se llama ‘main’ en las versiones recientes de Git, reemplazando ‘master’.

git branch
Listing all branches in preparation for git merge.

Creando una Rama para Git Merge

Con la configuración inicial de Git completada y el primer commit realizado, es hora de crear una nueva rama. Esta rama se utilizará para demostrar el proceso de git merge de manera efectiva.

1. Actualiza el archivo index.html con nuevo contenido para demostrar los cambios en tu rama. Esta versión incluye campos de entrada de usuario, preparándose para una demostración de git merge.

<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Git Merge Demo</title>
</head>
<body>
    <h4>Enhancing Git Merge Skills</h4>
    <form action="">
      <input type="text" name="username" placeholder="Username" />
      <input type="password" name="password" placeholder="Password" />
    </form>
</body>
</html>

2. Verifica el estado de tu repositorio con git status para ver los cambios en index.html. Debería indicar que el archivo está modificado y sin confirmar, listo para los siguientes pasos en el proceso de git merge.

Inspecting repository changes for git merge.

3. Crea una nueva rama llamada “form” con git checkout -b form. Este comando no solo crea la nueva rama, sino que también cambia tu rama de trabajo a “form”, esencial para implementar git merge.

git checkout -b form
Creating a new branch for git merge.

4. Confirma la creación de la nueva rama ejecutando git branch. Ahora deberías ver tanto las ramas “form” como “master”, con “form” como la rama activa indicada por un asterisco (*).

git branch
Confirming the active ‘form’ branch for git merge.

5. Haz staging y commitea tus cambios a la rama form. Esta acción asegura que la rama form refleje las actualizaciones recientes hechas al archivo index.html, preparando el terreno para un git merge efectivo.

## Etapa el archivo actualizado
git add index.html

## Confirma los nuevos cambios
git commit -m "Added user input fields to form"
Committing updated index.html to the ‘form’ branch for git merge.

Merge de Rama Local con Git Merge

Ahora que tienes ramas distintas en tu repositorio de GitHub, el siguiente paso es fusionarlas. Esta sección se centra en fusionar ramas localmente usando el comando git merge, una operación fundamental de Git.

1. Para comenzar la fusión, cambia a la rama master, que recibirá las actualizaciones de la rama form:

git checkout master

2. Una vez en la rama master, ejecuta git merge form para combinar los cambios de la rama form en master. Este es un paso crucial en el proceso de git merge.

git merge form
Successfully merging branches using git merge.

3. Confirma la fusión asegurándote de que estás en la rama master y verificando que el contenido de index.html haya sido actualizado.

# Confirma la rama actual
git branch
# Verifica el contenido fusionado
cat index.html
Reviewing index.html content post git merge.

Optimizando con Git Squash

Squash en Git es una técnica utilizada para limpiar el historial de confirmaciones. Cuando tienes múltiples mensajes de confirmación que no son necesarios individualmente, squash te permite combinarlos en una única confirmación completa. Esta práctica es especialmente útil cuando te estás preparando para un git merge.

Exploremos el proceso de squash haciendo cambios adicionales en el archivo index.html en la rama form, y luego aplastando estos cambios.

1. Cambia de nuevo a la rama form para hacer cambios adicionales:

git checkout form

2. Modifica el archivo index.html agregando un encabezado de formulario. Este paso creará un cambio que luego fusionaremos durante el merge:

<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <h4>Mastering Git Merge with Form Updates</h4>
    <form action="">
      <h4>Account Details</h4>
      <input type="text" name="username" placeholder="Username" />
      <input type="password" name="password" placeholder="Password" />
      <button>Submit</button>
    </form>
</body>
</html>

3. Etapa y realiza un commit de los cambios con un mensaje claro que describa la actualización:

git add index.html
git commit -m "Enhanced form with a header for git merge"
Staging and committing changes for squashing in git merge.

4. Mejora el archivo index.html en la rama form agregando un nuevo campo de entrada. Esta modificación es parte de la preparación para una fusión efectiva de git merge.

<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Git Merge Example</title>
</head>
<body>
    <h4>Practicing Git Merge</h4>
    <form action="">
      <h4>Enter account details</h4>
      <input type="text" name="fullname" placeholder="Full Name" />
      <input type="text" name="username" placeholder="Username" />
      <input type="password" name="password" placeholder="Password" />
      <button>Submit</button>
    </form>
</body>
</html>

5. Etapa y realiza un commit de estos cambios con un mensaje distintivo, asegurando que cada paso en tu trabajo esté claramente documentado para el próximo git merge.

git add index.html
git commit -m "Enhanced form with an additional input field"
Adding another input field to index.html for git merge.

6. A continuación, inserta un elemento de párrafo debajo del formulario en index.html, modificando aún más el archivo en preparación para un git merge.

<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Git Merge Practice</title>
</head>
<body>
    <h4>Let's get started with git merge</h4>
    <form action="">
      <h4>Enter account details</h4>
      <input type="text" name="fullname" placeholder="Full Name" />
      <input type="text" name="username" placeholder="Username" />
      <input type="password" name="password" placeholder="Password" />
      <button>Submit</button>
    </form>
    <p>Already a user?</p>
</body>
</html>

7. Nuevamente, etapa y realiza un commit de los cambios, utilizando un mensaje que capture la esencia de esta actualización, crucial para el proceso de git merge.

git add index.html
git commit -m "Added user status paragraph to form"
Further modifying index.html for git merge.

8. Utiliza git rebase en modo interactivo para ver y editar tus commits recientes. Este paso es esencial en el proceso de fusionar commits para un git merge limpio.

git rebase -i HEAD~3

9. En el modo interactivo, elige reword para el primer commit y squash para los siguientes. Esta acción consolida tu historial de commits, haciendo que tu git merge sea más limpio y organizado.

Preparing commits for squashing in git merge.

10. Después de reescribir y guardar, actualiza el mensaje del commit consolidado para reflejar los cambios acumulativos. Este paso finaliza el proceso de fusión, preparándote para un git merge simplificado.

Finalizing the commit message for git merge.

Confirmar el éxito de su operación de aplastamiento, que es una parte integral del proceso de git merge al manejar múltiples mensajes de confirmación.

Successful git squash operation.

Para el aplastamiento y fusión simultáneos, utilice git merge --squash. Esta técnica fusiona y aplasta la rama form en la rama master, combinando eficientemente las confirmaciones.

git merge --squash form

Al ejecutar el comando git merge --squash, se combinan los cambios de la rama form en master, al mismo tiempo que se condensan todas las confirmaciones en una sola. Este enfoque es parte de las estrategias efectivas de git merge.

Executing git merge with squash option.

Implementación del avance rápido en Git Merge

Para un historial de confirmaciones simplificado, el avance rápido es un método ideal, especialmente para actualizaciones menores o correcciones de errores. Permite fusionar ramas sin confirmaciones de fusión adicionales, manteniendo un historial limpio y lineal, crucial para procesos eficientes de git merge.

El avance rápido ocurre cuando no hay divergencia en la rama base, típicamente la master, lo que permite una integración sin problemas de historiales y actualizaciones de punteros.

1. Cambie a la rama form para comenzar el proceso de avance rápido:

git checkout form

2. Cree y actualice un archivo JavaScript, como index.js, en la rama form, preparando y confirmando los cambios:

git add index.js
git commit -m "Added JavaScript functionality"

3. Finalmente, fusione la rama form en master utilizando un enfoque de avance rápido. Este paso alinea la rama master con los últimos cambios de la rama form, creando un camino de git merge suave y lineal.

git checkout master
git merge form
Performing a fast-forward merge in Git.

Conclusión

Este tutorial te ha guiado a través de varias técnicas para combinar ramas utilizando git merge. Desde aplastar commits hasta avanzar rápidamente, estos métodos mejoran tu capacidad para gestionar proyectos colaborativamente en Git.

Ahora, equipado con estas habilidades, considera contribuir a proyectos colaborativos en GitHub, aplicando tu conocimiento de git merge en escenarios del mundo real.

Source:
https://adamtheautomator.com/git-merge/