How Do I Reset the Comparison Counter Between Two Branches in Azure DevOps?

In Azure DevOps, when you compare two branches (for example, TEST and MASTER), the UI shows a comparison counter that indicates how many commits one branch is ahead or behind the other.

Sometimes, especially with workflows like squash merges, this counter gets confusing:

  • You have a branch TEST with detailed commits.
  • You squash those commits and merge to MASTER.
  • Even though the file contents are identical, Azure DevOps shows TEST as ahead of MASTER by some commits.
  • Merging MASTER back to TEST just adds one more commit, so the count never resets to zero.

You might wonder:
Is there a way to reset this ahead/behind counter to zero, showing that the branches are identical?


Why Does This Happen?

The key is:
Azure DevOps (and Git in general) calculates ahead/behind counts based on commit history, not file content.

  • Squash merges create a single new commit on MASTER with a different commit hash than the original commits on TEST.
  • Therefore, even if the code is the same, Git sees the branches as having different commit histories.
  • This causes TEST to be “ahead” of MASTER (because TEST still has the detailed commits that MASTER doesn’t).
  • Merging MASTER back adds a merge commit, so TEST becomes ahead by 1 commit instead of zero.

How to Reset the Comparison Counter to Zero

1. Make the branch histories identical

To have the ahead/behind counter show zero, you need to make the two branches share the exact same commit history.

How?

  • Instead of squash-merging, use a regular merge that preserves all commits.
  • Or, after squash-merging to MASTER, reset the TEST branch to MASTER to align histories:
git checkout TEST
git reset --hard MASTER

Warning: This will discard the detailed commit history on TEST and make it identical to MASTER.

2. Force push the reset branch (if remote)

git push --force origin TEST

Now, TEST and MASTER have the same commit history, and the comparison counter should be zero.


Important Notes

  • If keeping the detailed commit history on TEST is important, you cannot reset the counter to zero without losing that history.
  • This is because the counter is based on commit ancestry, not code state.
  • The “ahead/behind” indicator is only informational; it doesn’t affect your code or build.

Alternative Strategies

  • Accept that TEST will always be ahead after squash merges.
  • Use pull requests and branch policies to ensure clean merges.
  • Use feature branches for detailed work, squash-merge those to MASTER, and reset or recreate TEST from MASTER when needed.
  • Use tags or commit messages to mark task completion rather than relying on the comparison counter.

Summary Table

Scenario Result on Ahead/Behind Counter How to Reset
Squash merge TESTMASTER TEST ahead by detailed commits Reset TEST to MASTER (git reset --hard)
Regular merge preserving commits Branches share history Counter zero by default
Keep detailed commits but want zero count Not possible N/A

Final Thoughts

The comparison counter in Azure DevOps is a reflection of commit history divergence, not code divergence.

To reset it, you must align the commit histories exactly, which typically means losing the detailed history on the branch you want to reset.

If the history matters, it’s best to accept the counter’s behavior as normal.
For more information stay in touch with US
You can also ask about any difficulties that you are facing at askfullstack