Merge conflicts are a normal part of working in Git. Learn why they happen and how to resolve them with ease.
⛳ Start
We recommend creating a public repository, as private repositories will use Actions minutes.
After you make your own repository, wait about 20 seconds and refresh. I will go to the next step.
Merge conflicts happen when two people make changes to the same file on GitHub—a common occurrence when you’re working with others. While resolve differences might involve some discussion, merge conflicts don’t have to be scary. This course guides you through the steps to finding the best merge conflict solution, so your team can keep building.
- Who is this for: New developers, new GitHub users, users new to Git, students, managers, teams.
- What you'll learn: What merge conflicts are, how you resolve merge conflicts, how to reduce merge conflicts.
- What you'll build: We'll work with a short Markdown resume file in this course.
- Prerequisites: We recommend taking Introduction to GitHub prior to this course.
- How long: This course is three steps long and takes less than 30 minutes to complete.
🧘 Step 1: Resolve a merge conflict
What is a merge conflict: A Merge conflict occurs when changes are made to the same part of the same file on two different branches. You usually find out about conflicts in a pull request.
This can be intimidating, but have no fear, Git is smart when it comes to merging! Git only needs a human to decide how to resolve the conflict. Sometimes, the best way to resolve a merge conflict is to add content that's from both branches, or even something that isn't on either! This is why Git needs a human to look at the code and make the proper fixes.
- Open a new browser tab, and work on the steps in your second tab while you read the instructions in this tab.
- Open the pull request we made for you, and we also made a conflict. Have no fear!
- At the bottom of the page in the "This branch has conflicts that must be resolved" section of the pull request, click the Resolve conflicts button.
- Look for the highlighted sections that begins with
<<<<<<< my-resume
and ends with>>>>>>> main
. These markers are added by Git to show you the content that is in conflict. - Remove the changes made on the main branch by deleting all of the content below the
=======
and above>>>>>>> main
. - Next, remove the merge conflict markers by deleting the following lines:
<<<<<<< my-resume ======= >>>>>>> main
- With the merge conflict markers removed, click Mark as resolved.
- Finally, click Commit merge.
- Wait about 20 seconds then refresh this page for the next step.
😈 Step 2: Create your own conflict
Resolving a conflict doesn't automatically merge the pull request in GitHub. Instead, it stores the resolution of the conflict in a merge commit and allows you and your team to keep working. To resolve a conflict, GitHub performs what is known as a reverse merge. This means that the changes from the main
branch were merged into your my-resume
branch. With a reverse merge, only the my-resume
branch is updated. This allows you to test the resolved changes on your branch before you merge it into main
.
Now let's get a little evil. (Its for educational purposes!)
We went ahead and pushed another change to main
without updating your my-resume
branch in the background.
- Click on the Files changed tab in this pull request.
- Click in the top right-hand corner of the
resume.md
file that had been previously modified. - Click Edit file to open the file editor.
- Modify the contents of the last line.
- Scroll to the bottom of the page and enter a commit message for your change.
- Click the Commit changes button, making sure the "Commit directly to the
my-resume
branch" option is selected. - Wait about 20 seconds then refresh this page for the next step.
Step 3: Merge your pull request
You can now merge your pull request!
- First, resolve any remaining conflicts in your pull request.
Look back at step one if you need help.
- Click Merge pull request.
- Delete the branch
my-resume
(optional). - Wait about 20 seconds then refresh this page for the next step.
🏁 Finish
Here's a recap of all the tasks you've accomplished in your repository:
- You learned why merge conflicts happen.
- You resolved a simple merge conflict.
- You created a merge conflict, and resolved it!
- Make your own Markdown resume site with GitHub Pages! Learn how in our GitHub Pages course.
- We'd love to hear what you thought of this course in our community forum.
- Take another GitHub Learn course.
- Read the GitHub Getting Started docs.
- To find projects to contribute to, check out GitHub Explore.
Get help: Post in our community forum • Review the GitHub status page
© 2022 GitHub • Code of Conduct • CC-BY-4.0 License