Resolve merge conflicts
Learn why conflicts happen and how to resolve them.
Step 1: Resolve a merge conflict
Welcome to "Managing Merge Conflicts"!
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.
⌨️ Activity: Resolve a merge conflict
- 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. We also made a conflict. Have no fear!
- At the bottom of the page, under "This branch has conflicts that must be resolved", 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
Good job! You've solved a merge 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. (It's for educational purposes!)
⌨️ Activity: Create your own conflict
We went ahead and added a new file called references.md
and pushed that change to main
, without updating your my-resume
branch.
- Browse to the
my-resume
branch. - Click the
Add file
dropdown menu and then onCreate new file
. - Create a file named
references.md
. - Enter some text that conflicts with what we added for
references.md
in themain
branch. - Scroll to the bottom of the page and enter a commit message for your change.
- Click the Commit new file 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
Almost there!
You can now merge your pull request!
⌨️ Activity: 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
Congratulations friend, you've completed this course!
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!
What's next?
- 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 discussion board.
- Take another GitHub Skills course.
- Read the GitHub Getting Started docs.
- To find projects to contribute to, check out GitHub Explore.
Get help: Post in our discussion board • Review the GitHub status page
© 2022 GitHub • Code of Conduct • CC-BY-4.0 License