Skip to content

Merge Strategies

Agree if you want a linear or non-linear commit history. There are pros and cons to both approaches:

Approach for Non-Linear Commit History

Merging topic into main

  A---B---C topic
 /         \
D---E---F---G---H main

git fetch origin
git checkout main
git merge topic

Two Approaches to Achieve a Linear Commit History

Rebase Topic Branch Before Merging into Main

Before merging topic into main, we rebase topic with the main branch:

          A---B---C topic
         /         \
D---E---F-----------G---H main

git checkout main
git pull
git checkout topic
git rebase origin/main

Create a PR topic --> main in Azure DevOps and approve using the squash merge option

Rebase Topic Branch Before Squash Merge into Main

Squash merging is a merge option that allows you to condense the Git history of topic branches when you complete a pull request. Instead of adding each commit on topic to the history of main, a squash merge takes all the file changes and adds them to a single new commit on main.

          A---B---C topic
         /
D---E---F-----------G---H main

Create a PR topic --> main in Azure DevOps and approve using the squash merge option


Last update: August 26, 2024