How to Contribute to Your First Open Source Project
Tags: opensource, codenewbie, github, tutorial
Published: 2021-04-19 16:35:42

---
canonical_url: https://blog.katherinempeterson.com/how-to-contribute-to-your-first-open-source-project
---

Last week, I open sourced one of my projects, https://readme.so. It is now up to 14 contributors, and many of them were contributing to an open source project for the first time. 

For many developers, the idea of contributing to an open source project for the first time is intimidating. However, it builds valuable skills and is extremely rewarding. In this post, I'll give a step-by-step guide to contributing to your first open source project. 

I will use my github repo ([https://github.com/katherinepeterson/readme.so](https://github.com/katherinepeterson/readme.so)) as an example, but it is the same for any open source project.

## 1. Fork the Repo

Navigate to the GitHub repo that you want to contribute to and click `Fork` in the upper right-hand corner. 

![Fork button](https://cdn.hashnode.com/res/hashnode/image/upload/v1618806977415/NdUPk3Xdt.png)

This will create a copy of the repo under your GitHub username. 

## 2. Clone Your Fork

When you fork the repo, it will take you to your copy of the repo in GitHub. Now you want to clone your fork.

Click the green `Code` button and copy the URL.

Go to your terminal and navigate to the directory where you want to clone the project.

Run the following command with the URL you copied above.

```bash
git clone <url>
```

Cd into the folder that was just created.

```bash
cd <project-name>
```

## 3. Create a Branch

Create a branch where you can make your changes.

```bash
git checkout -b <your-branch-name>
```

## 4. Make Your Changes

Open the project in your favorite editor and make your changes. 

## 5. Commit and Push Your Changes

Next, you want to stage, commit, and push your changes to your fork.

```bash
git add .
git commit -m "your commit message here"
git push -u origin head
```

## 6. Open a PR

Navigate back to the original repo from which you forked, and you will see a prompt to open a new Pull Request from the branch you just pushed to. 

Click `Compare & pull request`, add a description describing the changes you made, and open the PR.

The owners of the repo can now review your changes and decide whether to approve and merge, request changes, or decline your pull request. 

If you need to add more changes to this pull request, you can just keep pushing to the same branch and it will automatically update the PR. 

---

# Bonus: Keeping Your Fork in Sync

If changes have been made to the original repo since you forked it, you are going to want to pull those changes into your fork. Here are the steps to do this.

## 1. Navigate to the Main Branch of Your Local Fork

```bash
git checkout main
```

## 2. Add the Original Repo as the Upstream Remote

Navigate to the original repo, click the green "Code" button, and copy the URL as if you were going to clone the repo.

In your project, run

```bash
git remote add upstream <url>
```

Now you have a pointer to the original repo, called `upstream`, and a pointer to your forked repo, called `origin`.

## 3. Pull the Latest Changes from Upstream

Pull the latest changes from the main branch (or whatever the default branch is called) of the upstream repo.

```bash
git pull upstream main
```

## 4. Push the Changes to Your Fork

Now you have the upstream changes locally, but not in your remote origin. To push to your forked repo, run 

```bash
git push origin main
```

Now you are in sync! To make another contribution, you can create a new branch and repeat the process. 

That's it! If you run into any issues or have questions, feel free to reach out to me on [Twitter](https://twitter.com/katherinecodes).