0% found this document useful (0 votes)
20 views14 pages

Resolving Git Merge Conflicts Guide

Git is able to automatically merge most changes between branches, but sometimes conflicts arise that it cannot resolve on its own. When merging branches that have modified the same file lines, Git will mark those files as conflicting and halt the merge process. It is then up to the developer to view the conflict markers in the file, choose the correct version to keep, and resolve the conflicts before committing the merged result. The document demonstrates how to intentionally create a merge conflict for learning purposes.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
20 views14 pages

Resolving Git Merge Conflicts Guide

Git is able to automatically merge most changes between branches, but sometimes conflicts arise that it cannot resolve on its own. When merging branches that have modified the same file lines, Git will mark those files as conflicting and halt the merge process. It is then up to the developer to view the conflict markers in the file, choose the correct version to keep, and resolve the conflicts before committing the merged result. The document demonstrates how to intentionally create a merge conflict for learning purposes.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd

Basic Merge Conflicts

by Caleb Espinoza G.
Merge Conflicts
● Conflicts generally arise when two people have changed
the same lines in a file.
● Conflicts only affect the developer conducting the
merge, the rest of the team is unaware of the conflict.
● For example: one developer deleted a file while another
developer was modifying it.
How Git handles the conflicts.
● Git will figure out how to automatically integrate new
changes.
● Git cannot automatically determine what is correct.
● Git will mark the file as being conflicted and halt the
merging process.
● It is the developers' responsibility to resolve the
conflict.
Let's create a merge conflict
1. Initialize a repo and commit a change:
● $ mkdir git-merge-test
● $ cd git-merge-test
● $ git init .
● $ echo "Please, don't touch this line" > [Link]
● $ git add [Link]
● $ git commit -m "we are committing the initial content"
Let's create a merge conflict
2. Create a new branch and edit the file at the same line:
● $ git checkout -b new_branch_to_merge_later
● $ echo "totally different content to merge later" >
[Link]
● $ git commit -am "edited the content of [Link] to
cause a conflict"
With this new branch: new_branch_to_merge_later we have
created a commit that overrides the content of [Link]
Let's create a merge conflict
3. Add content to [Link]
● $ git checkout master
● $ echo "content to add" >> [Link]
● $ git commit -am "added content to [Link]"
Now, we have 2 commits, one in the master branch and one in
the new_branch_to_merge_later branch.
Let's create a merge conflict
4. Lets git merge new_branch_to_merge_later
● $ git merge new_branch_to_merge_later
● Auto-merging [Link]
● CONFLICT (content): Merge conflict in [Link]
● Automatic merge failed; fix conflicts and then commit
the result.

BOOM 💥
A conflict appears!
How to identify which files have merge conflicts
Check the status
● $ git status
● On branch master
● 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: [Link]
How to SOLVE merge conflicts
Open the [Link] file in your favorite editor.
● $ cat [Link]
● <<<<<<< HEAD
● Please, don't touch this line
● content to append
● =======
● totally different content to merge later
● >>>>>>> new_branch_to_merge_later
How to SOLVE merge conflicts
● Think of these new lines as "conflict dividers".
● The ======= line is the "center" of the conflict.
● All the content between the center and the <<<<<<<
HEAD line is content that exists in the current branch
which the HEAD ref is pointing to.
● Alternatively all content between the center and
>>>>>>> new_branch_to_merge_later is content that is
present in our merging branch.
How to SOLVE merge conflicts
Lets simply remove all the conflict dividers.
● Please, don't touch this line
● content to append
● totally different content to merge later
Now, lets run the following commands:
● $ git add [Link]
● $ git commit -m "merged and solved the conflict in
[Link]"
General tools
Lets simply remove all the conflict dividers.
● git status
● git log --merge
● git diff
● git merge --abort
● git reset
Thank you so much!

You might also like