Few things halt a developer’s flow faster than seeing the dreaded word: CONFLICT.
A Git merge conflict happens when Git cannot automatically reconcile differences made to the exact same part of a file, or when one branch deletes a file while another modifies it. While it might look intimidating at first, resolving a conflict is just a matter of reviewing the code, picking what stays, and completing the commit.
Here is the standard workflow to fix Git merge conflicts without breaking your codebase.
You initiate a merge into your active branch:
git merge feature-branch If Git runs into conflicting lines, it pauses the operation and outputs a message like this:
CONFLICT (content): Merge conflict in app.js
Automatic merge failed; fix conflicts and then commit the result.
To see every file that needs your attention, run:
git status Git will list all unmerged paths clearly.
Open any conflicted file (app.js, for instance) in your editor. You will spot markers generated by Git that look like this:
<<<<<<< HEAD
console.log("Current branch");
=======
console.log("Feature branch");
>>>>>>> feature-branch
Here is how to decode those lines:
<<<<<<< HEAD: Marks the beginning of the conflicting code on your current branch.=======: The divider separating the two conflicting versions.>>>>>>> feature-branch: Marks the end of the incoming changes from the branch you are merging.To resolve the conflict, edit the file directly. You can choose to keep:
For example, to keep both versions:
console.log("Current branch");
console.log("Feature branch"); Important: Make sure to delete all Git markers (
<<<<<<<,=======, and>>>>>>>) from the file before saving.
Once you have saved the cleaned-up file, stage it to mark the conflict as resolved:
git add app.js Finally, finish the merge with a commit:
git commit If Git opens your default text editor with a pre-filled merge commit message, simply save and close the file.
git checkout main
git merge feature-login
# Edit src/login.js to manually clear markers and select valid code
git add src/login.js
git commit git diff --name-only --diff-filter=Ugit merge --abortgit mergetoolIf you use modern editors like VS Code or IntelliJ IDEA, you rarely need to edit markers manually. They offer convenient inline action buttons right above the conflict:
They also offer three-way or side-by-side graphical merge editors that let you compare changes visually.
Latest tech news and coding tips.
React makes building user interfaces easier, but certain errors appear repeatedly, especially when working with…
The C programming language is a foundational, general-purpose computer programming language created by Dennis Ritchie at Bell Labs in 1972. Originally developed to…
What Is Homebrew? Homebrew is a package manager for macOS and Linux that makes it easy to…
JavaScript gives you several ways to iterate over an array. Some are better for simple…
A web server is the software responsible for receiving requests from clients, processing those requests,…
A shell prompt is the text displayed by a command-line shell to show that it is ready…