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.
Backpressure is a flow-control mechanism that prevents a fast data producer from overwhelming a slower data…
JavaScript collections are data structures used to store, organize, retrieve, and manipulate groups of values. Choosing…
Context poisoning is a technique where an attacker deliberately places misleading, malicious, or irrelevant information into…
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…