Git Merge Conflicts
What is a Merge Conflict?
A merge conflict happens when two branches change the same part of a file.
Git can't decide which change to keep, so you have to choose.
You must resolve the conflict before you can finish the merge.
Why Do Merge Conflicts Happen?
Merge conflicts usually happen when you merge branches that changed the same lines in a file.
This is common in collaborative projects or when working on long-lived branches.
How to See and Resolve Merge Conflicts
When you merge a branch and there are conflicting changes, Git will pause and mark the files with conflicts.
Example: Merge a Branch
git merge feature-branch
Auto-merging filename.txt
CONFLICT (content): Merge conflict in filename.txt
Automatic merge failed; fix conflicts and then commit the result.
Try it Yourself »
If there are conflicts, Git will tell you which files are affected.
See Which Files Have Conflicts
Use git status to see which files need your attention:
Example: Check Status
git status
On branch main
You have unmerged paths.
(fix conflicts and run "git commit")
(use "git merge --abort" to abort the merge)
Unmerged paths:
(use "git add <file>..." to mark resolution)
both modified: filename.txt
no changes added to commit (use "git add" and/or "git commit -a")
Try it Yourself »
See the Differences
Use git diff to see what changed and help you decide how to resolve the conflict:
Example: See Differences
git diff
diff --cc filename.txt
index 56f2c83,0c6be20..0000000
--- a/filename.txt
+++ b/filename.txt
@@@ -1,1 -1,1 +1,5 @@@
++<<<<<<< HEAD
+Your changes here
++=======
+ Other branch's changes
++>>>>>>> feature-branch
Try it Yourself »
Edit the Conflict Markers
Open the conflicted file. You'll see sections like this:
Conflict Markers
<<<<<<< HEAD Your changes here ======= Other branch's changes >>>>>>> feature-branch
Edit the file to keep what you want, then remove the conflict markers (<<<<<<<, =======, >>>>>>>).
Mark as Resolved
After fixing the file, mark it as resolved:
Complete the Merge
Finish the merge with a commit (if Git doesn't do it automatically):
Cancel the Merge
If you want to stop and undo the merge:
Use a Visual Merge Tool
If you prefer, you can use a visual tool to resolve conflicts:
Example: Use Mergetool
git mergetool
Pick One Side's Changes
If you want to keep only your changes or only the other branch's changes:
Troubleshooting & Best Practices
- If you're stuck, you can always use
git merge --abortto start over. - Make sure you remove all conflict markers before marking as resolved.
- If you use
git mergetooland don't like the result, you can still edit the files by hand.