How to Submit a Pull Request on GitHub
In this GitHub primer series, learn about submitting a pull request and contributing to open source projects.
So you want to contribute to Open Source and you've located a task or issue to work on.
That's good. The recommended workflow is to create a fork of the existing repository, make your changes and send a pull request.
You've fixed the issue, tested your code but don't know how to send a pull request? Don't worry, this article is for you.
What is a Pull Request?
A Pull Request serves as a proposal to merge a set of changes from one branch into another. A fork can also be considered as another branch.
Collaborators can review and discuss the proposed changes before integrating them into the main codebase. Pull requests display the differences, or "diffs," between the content in the source branch and the target branch. - GitHub
Steps for Submitting a Pull Request
After creating a fork and committing your changes, you will find an option to create a Pull Request by clicking on the "contribute" button.
Comparing Changes
Upon clicking, you will be directed to a page comparing the commits and files of your current fork or branch, indicating whether it's "able to merge." "Able to merge" means there are no files with conflicts.
If conflicts exist, preventing automatic merging, GitHub will notify you. You can still send your Pull Request, but it won't be merged until conflicts are resolved.
Next, you'll be prompted to add your Pull Request title and description.
Your Pull Request will now appear in the Pull Requests Tab on the GitHub repository.
Merge Conflicts
Merge conflicts may arise when different branches modify the same line(s) of a file. It's crucial to pull others' code before making changes to have the history of their modifications.
In our example, while working on an issue to update a README file, the repository owner made changes to the same file.
As illustrated above, the current commit shows the current file data line-by-line. When making a Pull Request, you not only have the current data but also what it used to be.
In this illustration, line 2 was originally "cool project" and updated to "cool prect." The Pull Request however states that the line was "Cool prject" and then updated to "Cool project.
Git tracks not just file data but also commit data, preventing the addition of a commit with a modified file unless you first pull the changes that made it "cool prect" and then update it to "cool project."
Resolving Merge Conflicts
To resolve a merge conflict (well in this case) you will want to store your changes somewhere, rollback to the commit before you made any changes pull the new changes from their repository and then add your changes back by making another Pull Request, that way, your workflow looks something like this.
Notice how both repositories have the same number of commits and all have the same history.
Conclusion
After following the procedures in the article, I believe you will be able to easily create Pull Requests and deal with minor merge conflicts. The repo I used in this example is this. If you want to check that out, feel free to visit the repository.
LHB Community is made of readers like you who share their expertise by writing helpful tutorials. Contact us if you would like to contribute.