DEV Community

Sardar Mudassar Ali Khan
Sardar Mudassar Ali Khan

Posted on

Resolving Merge Conflicts on Azure Git Branch A Comprehensive Guide

Merge conflicts in Git can be a source of frustration, especially when dealing with complex branching structures on platforms like Azure Git. However, understanding how to resolve these conflicts efficiently is crucial for maintaining a smooth development workflow. Here’s a step-by-step guide on resolving merge conflicts on Azure Git branches, accompanied by a complex example to illustrate the process.

Understanding Merge Conflicts

Merge conflicts occur when Git is unable to automatically merge changes from different branches due to conflicting modifications in the same file or files. These conflicts demand manual intervention to determine the correct changes to be included in the final merge.

Steps to Resolve Merge Conflicts on Azure Git Branches

Step 1: Preparation

Before resolving conflicts, ensure your local repository is up-to-date with the remote branch:

git fetch origin
git checkout <your-branch>
git pull origin <your-branch>
Enter fullscreen mode Exit fullscreen mode

Step 2: Initiating Merge

Let’s assume you're merging changes from feature-branch into main.

git checkout main
git merge feature-branch
Enter fullscreen mode Exit fullscreen mode

Step 3: Identifying Conflicts

If conflicts arise, Git will indicate the conflicted files. Open these files in your preferred code editor.

Step 4: Understanding Conflict Markers

Conflict markers (<<<<<<<, =======, >>>>>>>) delineate conflicting changes:

<<<<<<< HEAD
Code from main branch
=======
Code from feature-branch
>>>>>>> feature-branch
Enter fullscreen mode Exit fullscreen mode
  • <<<<<<< HEAD: The starting marker of changes from the current branch (main in this case).
  • =======: Separates changes from the current branch and the incoming changes.
  • >>>>>>> feature-branch: Indicates the ending marker of changes from the incoming branch (feature-branch).

Step 5: Resolving Conflicts

Manually edit the conflicted files to include the desired changes, removing conflict markers. Decide which code to retain or modify.

Step 6: Review Changes

After resolving conflicts, review the modified files thoroughly to ensure the changes are accurate and coherent.

Step 7: Adding and Committing Changes

Once conflicts are resolved, add the modified files and commit the changes:

git add <conflicted-files>
git commit -m "Resolved merge conflicts from feature-branch into main"
Enter fullscreen mode Exit fullscreen mode

Step 8: Push Changes

Finally, push the changes to the remote repository:

git push origin main
Enter fullscreen mode Exit fullscreen mode

Complex Example:

Let's consider a scenario where two developers, Alice and Bob, are working on the same file app.js in separate branches (alice-branch and bob-branch) based on the main branch.

  1. Alice's Changes (alice-branch): She modifies function foo().

  2. Bob's Changes (bob-branch): He modifies the same foo() function.

When merging alice-branch into main, a conflict arises due to conflicting changes in app.js:

<<<<<<< HEAD (Main branch)
function foo() {
    // Code modified in main branch
}
=======
function foo() {
    // Code modified in alice-branch
}
>>>>>>> alice-branch
Enter fullscreen mode Exit fullscreen mode

To resolve:

  • Review both implementations of foo() from main and alice-branch.
  • Decide which changes to retain or merge.
  • Remove conflict markers and ensure the final code integrates both sets of modifications if necessary.

Conclusion

Resolving merge conflicts on Azure Git requires a systematic approach involving understanding, analyzing, and selectively merging changes. By following these steps and comprehending the conflict resolution process, developers can effectively manage merge conflicts in complex branching scenarios, ensuring the stability and integrity of their codebase on Azure Git.

Top comments (0)