Trabajo Práctico N°1: Diferencia entre git merge y git rebase

3 min

Objetivos pedagógicos:

  • Comprender las diferencias fundamentales entre git merge y git rebase.
  • Observar los efectos de ambos comandos sobre el historial de Git.
  • Documentar las manipulaciones con capturas de pantalla y explicaciones claras.

Objetivos del TP

Al final de este TP, serás capaz de:

  1. Usar git merge y git rebase para integrar modificaciones de ramas.
  2. Analizar las diferencias entre los dos comandos en la estructura del historial.
  3. Identificar los casos de uso ideales de merge y rebase.

Instrucciones y pasos detallados

Preparación

  1. Crea una carpeta de trabajo para este TP:

    • En el terminal, escribe los comandos siguientes para preparar el entorno:
      bash
      mkdir git-evaluation-1
      cd git-evaluation-1
      git init
  2. Captura de pantalla: toma una captura que muestre la inicialización del repositorio (git init).


Paso 1: inicialización del repositorio y creación de la rama principal

  1. Creación del archivo inicial
    Crea un archivo llamado fichier1.txt (archivo original) y añade un commit de base en la rama principal main:

    bash
    echo "Contenu initial dans fichier1" > fichier1.txt
    git add fichier1.txt
    git commit -m "Initialisation du projet avec fichier1.txt"
  2. Renombra la rama principal a main (si hace falta):

    bash
    git branch -M main
  3. Captura de pantalla: muestra la adición del archivo y el primer commit.


Paso 2: creación de las ramas para el rebase y el merge

  1. Crea las ramas branche1 y branche2 a partir de main:

    • Crea branche1:
      bash
      git checkout -b branche1
    • Vuelve a main y crea branche2:
      bash
      git checkout main
      git checkout -b branche2
  2. Creación de las ramas de trabajo:

    • Crea branche-rebase a partir de branche1:
      bash
      git checkout branche1
      git checkout -b branche-rebase
    • Crea branche-merge a partir de branche2:
      bash
      git checkout branche2
      git checkout -b branche-merge
  3. Captura de pantalla: muestra la creación de las ramas con el comando git branch.


Paso 3: añadir commits idénticos en branche-rebase y branche-merge

Nota: usaremos archivos distintos (fichier-2-rebase.txt y fichier-2-merge.txt) y haremos las mismas modificaciones para poder comparar los efectos de merge y rebase.

  1. Trabajo en branche-rebase:

    • Primer commit:

      bash
      git checkout branche-rebase
      echo "Modification 1 dans branche-rebase" > fichier-2-rebase.txt
      git add fichier-2-rebase.txt
      git commit -m "Ajout de fichier-2-rebase.txt avec modification 1"
    • Segundo commit:

      bash
      echo "Modification 2 dans branche-rebase" >> fichier-2-rebase.txt
      git add fichier-2-rebase.txt
      git commit -m "Ajout de modification 2 dans fichier-2-rebase.txt"
    • Tercer commit:

      bash
      echo "Modification 3 dans branche-rebase" >> fichier-2-rebase.txt
      git add fichier-2-rebase.txt
      git commit -m "Ajout de modification 3 dans fichier-2-rebase.txt"
  2. Trabajo en branche-merge:

    • Primer commit:

      bash
      git checkout branche-merge
      echo "Modification 1 dans branche-merge" > fichier-2-merge.txt
      git add fichier-2-merge.txt
      git commit -m "Ajout de fichier-2-merge.txt avec modification 1"
    • Segundo commit:

      bash
      echo "Modification 2 dans branche-merge" >> fichier-2-merge.txt
      git add fichier-2-merge.txt
      git commit -m "Ajout de modification 2 dans fichier-2-merge.txt"
    • Tercer commit:

      bash
      echo "Modification 3 dans branche-merge" >> fichier-2-merge.txt
      git add fichier-2-merge.txt
      git commit -m "Ajout de modification 3 dans fichier-2-merge.txt"
  3. Captura de pantalla: muestra los commits realizados en cada rama con git log.


Paso 4: integración de las ramas con merge y rebase

  1. Rebase de branche-rebase en branche1:

    • Cambia a branche1:

      bash
      git checkout branche1
    • Haz rebase de branche-rebase en branche1:

      bash
      git rebase branche-rebase
    • Captura de pantalla: usa git log --oneline --graph --all para mostrar el historial lineal creado por el rebase.

  2. Merge de branche-merge en branche2:

    • Cambia a branche2:

      bash
      git checkout branche2
    • Fusiona branche-merge en branche2:

      bash
      git merge branche-merge -m "Fusion de branche-merge dans branche2"
    • Captura de pantalla: usa git log --oneline --graph --all para mostrar el historial con el commit de fusión.


Paso 5: comparación final y preguntas de reflexión

Preguntas de reflexión

  1. Comparar los historiales:

    • ¿Qué observas en la diferencia entre el historial de branche1 (con rebase) y el de branche2 (con merge)?
    • Toma una captura de cada historial y explica las diferencias observadas.
  2. Argumentos a favor de cada método:

    • ¿En qué casos sería preferible usar rebase para integrar modificaciones?
    • ¿En qué casos el merge es más ventajoso?
  3. Escenarios de aplicación:

    • Imagina un proyecto en equipo. Explica un caso concreto en el que merge podría causar conflictos en el historial, y cómo rebase podría resolver ese problema.
    • A la inversa, describe un caso en el que el uso excesivo de rebase podría dificultar el seguimiento en un proyecto colaborativo.

Resumen y entrega

Para entregar este TP:

  1. Reúne tus respuestas y capturas de pantalla en un documento (PDF o Word).
  2. Responde a las preguntas de reflexión al final del documento.
  3. Entrega el archivo en la plataforma del curso.