Never used Git before? Confused by forks, branches, and pull requests? This guide walks you from zero to your first merged PR, written for SSoC Season 5 newcomers, no prior experience needed.
~25 min read Beginner level 6 steps to your first PR
What is open source, really?
Open source software is code that anyone can read, use, modify, and improve. Projects like Linux, VS Code, React, and Python were all built collaboratively by thousands of contributors around the world, many of whom started exactly where you are right now.
When you contribute to open source, you're not just writing code. You're learning to read large codebases, communicate with engineers, follow conventions, and ship work that real people depend on. That's why recruiters love it.
What SSoC adds on top: mentors who guide you, curated beginner-friendly projects, a real timeline, swag, certificates, and a leaderboard to keep you motivated. You don't have to figure out where to start, we've done that part for you.
1
Install Git on your computer
Git is the version-control tool that powers open source. Think of it as a "save game" system for code, every change is tracked, reversible, and shareable.
Run the installer with default settings (just keep clicking Next).
Open Git Bash from your Start menu when done.
macOS
Open Terminal and run:
# Easiest way, installs Apple's command line tools (includes git)xcode-select--install
Linux (Ubuntu/Debian)
sudo apt update && sudo apt installgit-y
Verify it worked
git--version# Expected output: git version 2.x.x
Stuck? If your terminal says "command not found", restart it after installation. On Windows, always use Git Bash for these commands, not PowerShell or cmd.
2
Create your GitHub account
GitHub is where the world's open-source code lives. Your GitHub profile is your developer resume, make it count.
Sign up at github.com/join. Pick a clean, professional username, recruiters will see it.
Add a real photo, your real name, and a short bio. Empty profiles look like spam accounts.
Verify your email, GitHub blocks PRs from unverified accounts.
Connect Git on your computer to GitHub by setting your identity:
git config--global user.name"Your Name"git config--global user.email"you@example.com"# Use the SAME email you signed up to GitHub with
Set up SSH (recommended, do this once)
SSH lets you push code without typing your password every time.
# 1. Generate a new SSH keyssh-keygen-t ed25519-C"you@example.com"# 2. Copy the public key (Linux/Mac)cat~/.ssh/id_ed25519.pub
Student perk: Apply for the GitHub Student Developer Pack with your college email, you get free Copilot, free domains, and tons of dev tools.
3
Learn the 7 Git commands you'll actually use
You don't need to memorize all of Git. 95% of contributing to open source uses just these seven commands. Master these and you're set.
# 1. Clone, download a project to your computergit clonegit@github.com:user/project.git# 2. Status, see what files you've changedgit status# 3. Branch, start working on a new feature without breaking maingit checkout-b fix/typo-in-readme# 4. Add, stage changes you want to savegit addREADME.md# or stage everything you changed:git add.# 5. Commit, save a snapshot with a clear messagegit commit-m"docs: fix typo in installation section"# 6. Push, upload your branch to GitHubgit pushorigin fix/typo-in-readme# 7. Pull, get the latest changes from the remotegit pullorigin main
Mental model: Edit files → add them → commit creates a save point → push uploads it. That's the whole loop.
4
Find a "good first issue"
Don't randomly clone a giant repo and try to fix something hard. Maintainers literally tag beginner-friendly tasks for you.
On any GitHub repo, click Issues → filter by labels like good first issue, help wanted, beginner-friendly, or documentation.
Read the issue carefully. Comment something like: "Hi! I'd like to work on this. Can I be assigned?" Wait for confirmation before starting.
Small bugs, something behaves differently than the README says.
Tests, adding tests for existing functions teaches you the codebase fast.
Avoid: issues already assigned to someone else, issues with no recent activity from maintainers, or "rewrite the whole module" issues. Start small. Win small.
5
Fork, branch, and commit your fix
A fork is your personal copy of someone else's project. You make changes on your fork, then ask the original maintainer to pull them in.
Click the Fork button on the project's GitHub page (top-right). This creates github.com/YOU/project.
Clone your fork (not the original):
git clonegit@github.com:YOU/project.gitcdproject# Add the original project as "upstream" so you can sync latergit remote addupstream git@github.com:original-owner/project.git# Always create a new branch, never work on main directlygit checkout-b fix/issue-42-broken-link# ... make your changes in your editor ...git add.git commit-m"docs: fix broken link in setup guide (#42)"git pushorigin fix/issue-42-broken-link
Writing commit messages that don't get rejected
Bad:"updated stuff", "final fix pls merge", "asdfasdf"
Good:"fix: handle empty input in login form"
Great: Short title (≤ 50 chars), then a blank line, then 1–2 sentences explaining why.
6
Open your first Pull Request
A Pull Request (PR) is the formal request for the maintainer to merge your changes. This is the moment you officially become an open source contributor.
After pushing, GitHub shows a yellow banner saying "Compare & pull request". Click it.
Set the base repo to the original project, not your fork.
Write a clear title and description. Reference the issue: Closes #42 auto-links it.
Submit. A bot (or maintainer) will run tests and review.
Be patient. Maintainers are volunteers. If there's no reply in 7+ days, post one polite follow-up comment.
If they request changes, just commit again on the same branch and push, the PR updates automatically.
A PR description that gets merged
## What this does
Fixes the broken installation link in README.md
that pointed to an old domain.
## Why
Closes #42. Users were getting 404s when trying
to follow the setup guide.
## Testing
- Verified the new link opens correctly
- Ran npm test locally, all 28 tests pass
## Screenshots
(attach before/after if it's a UI change)
Once merged: grab your SSoC Contributor Badge, share it on LinkedIn, and add the project to your resume. You're officially an open source contributor.
The full Git cheatsheet
Bookmark this. You'll use it for the next decade.
# --- Setup (once) ---git config--global user.name"Your Name"git config--global user.email"you@example.com"# --- Daily workflow ---git status# what's changed?git diff# see the actual changesgit addfile.js# stage one filegit add.# stage everythinggit commit-m"feat: add login button"git log--oneline# history of commits# --- Branches ---git branch# list branchesgit checkout-b feature/dark-mode# create + switchgit checkoutmain# switch backgit mergefeature/dark-mode# merge into current# --- Sync with the original (upstream) ---git fetchupstreamgit mergeupstream/main# --- Undo (carefully!) ---git restorefile.js# discard local changesgit resetHEAD~1# undo last commit (keep changes)git revert<commit-hash># safely undo a pushed commit# --- Remote ---git pushorigin my-branchgit pullorigin maingit remote -v# list remotes
Etiquette & common pitfalls
Open source is a community. How you communicate matters as much as the code.
Do
Read the project's CONTRIBUTING.md and README.mdbefore opening an issue.
Comment on an issue and wait to be assigned before working on it.
Keep PRs small and focused. One issue = one PR.
Be polite, patient, and grateful. Maintainers do this in their free time.
If your PR is closed, ask why politely, every "no" is a free lesson.
Don't
Don't open empty or duplicate issues. Search existing issues first.
Don't spam "any update?" comments. Wait at least a week.
Don't submit PRs that fix typos in README just to farm contributions, many SSoC projects explicitly reject these.
Don't push directly to main. Always branch.
Don't share your SSH private key, .env files, or API tokens, ever.
Free resources to go deeper
Curated, actually-good, all free. Pick one and finish it.