All capabilities · Programming foundations

Collaborate with Git and GitHub

Branch, commit, review PRs, write READMEs and keep a public portfolio employers can inspect.

~8 focused hoursbeginner
Explore 3 tools for this project
Market relevance

Which roles ask for this — and how often

Share of job postings in India, per role, that name this capability.

Prerequisite capability — not asked for by name, but needed for others. Needed for: Ship faster with AI coding assistants, Automate builds, tests and deploys with CI/CD, Publish a portfolio employers can verify.
What employers mean

You should be able to…

  1. Branch off main for every feature/fix instead of committing straight to main
  2. Write commit messages that explain why, not just what
  3. Open a pull request with a clear description, and respond to review comments
  4. Resolve a merge conflict without losing either side's changes
  5. Keep a public GitHub profile/README that a recruiter can skim in under a minute
  6. Use git rebase or squash to keep history clean before merging
  7. Tag releases and write a CHANGELOG for a project others depend on
Learn — free, link-checked

The few resources that matter

Tools for practice

Choose a tool for the job

Start with one tool for each part of your project. You don’t need to learn them all.

Go to the practice brief

3 tools to explore

GitHub

Code · Plan & explain

Publish a project, review changes and explain how someone can reproduce your work.

GitHub Actions

Test · Deploy

Run checks and deployment steps automatically when project code changes.

Practice

A reviewable PR trail on a repo a stranger can run

Take a small tool you have already written and turn its remaining work into a real collaboration history. Push it public with a README someone else could follow from a clean clone, protect main so nothing lands without a PR, then ship the next five changes as five branch-scoped PRs — each with a description, your own review comments, and fix commits that answer them. Rebase at least one messy branch into a history that reads as a changelog before merging it.

Start from

A small tool of your own — the triage CLI or ticket API from an earlier capability, or any script over 100 lines with work left in it

Milestones
  1. Push the tool public with a runnable README and turn on branch protection · ~1.5h
  2. Slice the remaining work into five branches and open the first two PRs · ~1.5h
  3. Self-review each PR with real comments, then answer them in follow-up commits · ~1.5h
  4. Rebase one branch into a clean history and merge the whole set · ~1.5h
Done when
  • Repo has a README with setup instructions that a stranger could follow to run the project
  • At least 5 merged PRs, each on its own branch with a descriptive title and body
  • main branch is protected — direct pushes are blocked, PRs are required
  • At least one PR shows a resolved review comment thread or a rebase to clean up history
Prove it

Evidence a recruiter can check

  • Five merged PRs, each on its own branch, each with a description and a review thread you opened and resolved
  • The rebase, before and after: a branch's fixup-heavy commit graph squashed into commits that read as a changelog
  • Branch protection on main — required checks on, direct pushes off, shown in the settings page
  • Setup steps in the README verified from a fresh clone, listed as the exact commands you ran
Signal it

Ran a public repo on a reviewed PR workflow — five branch-scoped PRs with resolved review threads, protected main with required checks, and a rebased history that reads as a changelog.

Interview

Questions you'll get asked

  1. Walk me through what you do when you get a merge conflict on a shared branch.
  2. What's the difference between `git merge` and `git rebase`, and when would you use each?
  3. How do you undo a commit that's already been pushed to a shared branch?
  4. What makes a good pull request description that speeds up review?
  5. How would you structure commits for a large feature so reviewers can follow the story?
  6. What's in your .gitignore for a Python/Node project and why does it matter?
  7. Tell me about a PR review comment that changed how you wrote the code.