Git / GitHub
The universal version control system — every software engineering role expects fluency with Git for managing code changes and collaborating on a shared codebase.
Git is the version control system that underlies virtually all modern software development. GitHub (and GitLab, Bitbucket) hosts Git repositories and adds collaboration features: pull requests, code review, issue tracking, and CI/CD integrations. Git fluency — branching, merging, rebasing, resolving conflicts — is a baseline expectation for any engineering role, and GitHub specifically is the professional portfolio platform for developers.
Typical time to job-readiness: ~1 week.
Learning Git / GitHub
Beginner
Learn the core commands — clone, add, commit, push, pull, and branch. Create a pull request and understand what code review is before anything else.
Intermediate
Rebase, cherry-pick, resolve merge conflicts confidently, use git bisect for debugging, and write clear commit messages. Understand merge vs rebase and when to use each.
Advanced
Git internals (objects, refs, the DAG), managing monorepos, and setting up branch protection and GitHub Actions. Employers assess Git fluency through take-home projects and public PR history.
Key concepts
- The staging area (index): changes are staged before committing — allows partial commits
- Branching: cheap and fast in Git; create a branch for every feature or bugfix to isolate changes
- Merge vs rebase: merge preserves history as-is with a merge commit; rebase replays commits on top of another branch for a linear history
- Pull requests: the unit of code review — a proposed set of commits for review and discussion before merging
- The three states: modified (in working directory), staged (in index), committed (in history)
- git log, git diff, git blame — the three most important commands for understanding a codebase's history
Common interview topics
- What is the difference between git merge and git rebase
- How would you undo a commit that has already been pushed
- Explain what happens when there is a merge conflict and how you resolve it
- What is the difference between git fetch and git pull
- How would you find which commit introduced a bug using git