Code Monkey home page Code Monkey logo

skills-resolve-merge-conflicts's Introduction

Resolve merge conflicts

Learn why conflicts happen and how to resolve them.

Welcome

Merge conflicts happen when two people make changes to the same file on GitHub—a common occurrence when you’re working with others. While resolving 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.

How to start this course

start-course

  1. Right-click Start course and open the link in a new tab.
  2. In the new tab, most of the prompts will automatically fill in for you.
    • For owner, choose your personal account or an organization to host the repository.
    • We recommend creating a public repository, as private repositories will use Actions minutes.
    • Scroll down and click the Create repository button at the bottom of the form.
  3. After your new repository is created, wait about 20 seconds, then refresh the page. Follow the step-by-step instructions in the new repository's README.

Step 1: Create a pull request

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 so let's start by creating one.

⌨️ Activity: Create a pull request

  1. Open a new browser tab, and work on the steps in your second tab while you read the instructions in this tab.
  2. We made a small change to a file in the repository in the my-resume branch.
  3. Create a pull request setting my-resume as the head branch and main as the base branch. You can enter Resolving merge conflicts for the pull request title and body.
  4. Wait about 20 seconds then refresh this page for the next step.

Step 2: Resolve a merge conflict

Good start! Now let's look deeper at a merge conflict! 🔍

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

  1. Open the pull request that you just created, we created a conflict for you. Have no fear!
  2. At the bottom of the page, under "This branch has conflicts that must be resolved", click the Resolve conflicts button.
  3. 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.
  4. Remove the changes made on the main branch by deleting all of the content below the ======= and above >>>>>>> main.
  5. Next, remove the merge conflict markers by deleting the following lines:
    <<<<<<< my-resume
    =======
    >>>>>>> main
    
  6. With the merge conflict markers removed, click Mark as resolved.
  7. Finally, click Commit merge.
  8. Wait about 20 seconds then refresh this page for the next step.

Step 3: 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.

  1. Browse to the my-resume branch.
  2. Click the Add file dropdown menu and then on Create new file.
  3. Create a file named references.md.
  4. Enter some text that conflicts with what we added for references.md in the main branch.
  5. Scroll to the bottom of the page and enter a commit message for your change.
  6. Click the Commit new file button, making sure the "Commit directly to the my-resume branch" option is selected.
  7. Wait about 20 seconds then refresh this page for the next step.

Step 4: Merge your pull request

Almost there! ❤️

You can now merge your pull request!

⌨️ Activity: Merge your pull request

  1. First, resolve any remaining conflicts in your pull request.

    Look back at step one if you need help.

  2. Click Merge pull request.
  3. Delete the branch my-resume (optional).
  4. Wait about 20 seconds then refresh this page for the next step.

Finish

Congratulations friend, you've completed this course!

celebrate

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?


Get help: Post in our discussion boardReview the GitHub status page

© 2022 GitHub • Code of ConductMIT License

skills-resolve-merge-conflicts's People

Contributors

tstanko avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.