- Explain what version control is and why every software team on the planet uses it
- Describe how Git's distributed model differs from older centralised tools like SVN
- Understand Git's three-zone model: working files, staging preview, and permanent history
- Explain where Git fits in the automation testing and CI/CD pipeline
- Compare GitHub, GitLab, and Bitbucket and choose the right platform for a project
- Install Git on Windows and confirm it is running correctly
- Set your global identity (name + email) so every commit is properly attributed to you
- Inspect and understand the .git folder that Git creates inside every repository
- Create and configure a GitHub account ready for repository hosting
- Choose between HTTPS (web address) and SSH (key-based) access to GitHub
- Turn any folder into a Git repository instantly using git init
- Stage specific files or all changes using git add, and understand why staging exists
- Save a permanent snapshot with a meaningful message using git commit -m
- Browse the full project history using git log and git log --oneline
- See exactly what changed in any file before and after your edits using git diff
- Understand why every file goes through three states: untracked → staged → committed
- Copy any GitHub project to your computer using git clone
- Connect a local repository to GitHub as its remote origin
- Upload your committed changes to GitHub using git push
- Download and apply teammates' latest changes using git pull
- Understand the difference: git fetch downloads without applying, git pull downloads and applies
- Create .gitignore to keep secrets, IDE settings, and build outputs off GitHub
- Generate an SSH key pair — a private key your computer keeps and a public key you share with GitHub
- Add the public key to GitHub so it permanently recognises your machine
- Test the connection with a single command and confirm it works
- Configure SSH to handle multiple GitHub accounts from one machine
- Resolve the most common SSH errors that appear during first-time setup
- Understand PATs as a fallback authentication method for specific use cases
- Create a branch and start working in isolation without touching the main project
- Switch between branches instantly and understand what HEAD is pointing to at any time
- List all branches — on your computer and on GitHub — in a single command
- Name branches clearly using professional conventions: feature/, bugfix/, hotfix/, release/
- Delete branches after they have been merged to keep the repository clean
- Draw and explain a branching workflow diagram as you would in an interview
- Merge a completed feature branch back into main successfully
- Recognise when Git merges automatically and when it needs human input
- Read and understand the conflict markers (<<<, ===, >>>) Git inserts in conflicted files
- Manually edit the file to keep the correct version and complete the merge
- Abort a merge that has gone wrong and return to the pre-merge state
- Adopt working habits (frequent pulls, small commits, dedicated branches) that prevent most conflicts
- Stash unfinished work so you can switch branches without committing incomplete changes
- Manage multiple stash entries and bring back exactly the one you need
- Undo the last commit while keeping your file changes available to recommit differently
- Safely reverse a commit that is already on a shared branch using git revert
- Discard file changes that you have not committed yet and restore the last clean version
- Know exactly which undo method to use in each situation — and which ones to avoid on shared branches
- Create a pull request from your feature branch to main on GitHub
- Write a clear PR title and description that helps reviewers understand what changed and why
- Assign reviewers and configure required approvals before the PR can be merged
- Review another person's code, leave line-level comments, and approve or request changes
- Merge a PR after all approvals are received and all checks pass
- Set up branch protection rules to enforce the review process on protected branches
- Rebase a feature branch onto the latest main to produce a clean, linear project history
- Use interactive rebase to squash or tidy up a series of messy commits before sharing them
- Cherry-pick a specific commit from one branch and apply it to another without merging everything
- Tag a specific commit as a release version (e.g. v1.0) and push tags to GitHub
- Find out exactly who last changed any line of code and when using git blame
- Locate a bug-introducing commit efficiently using git bisect's binary search approach
- Stage, commit, and push changes entirely within VS Code's Source Control panel
- Resolve merge conflicts visually using VS Code's side-by-side comparison editor
- Create and switch branches directly from the VS Code status bar
- Commit, push, pull, and manage branches from PyCharm's VCS menu without opening a terminal
- Use GitHub Desktop as a fully visual alternative for teams that prefer a GUI workflow
- Know when the terminal is still the better choice and when the IDE GUI is faster
- Create a GitHub Actions workflow YAML file to automate tasks whenever code is pushed
- Set up automatic test execution on every push or pull request to a branch
- Configure jobs, steps, and runners to define exactly what the automation does and where it runs
- Set up webhooks to trigger notifications or actions in external tools when GitHub events occur
- Integrate GitHub with Jenkins so Jenkins can automatically trigger builds on code push
- Store sensitive credentials safely using GitHub Secrets so they are never visible in your code files
Interview Preparation Tips
Merge vs Rebase
Merge preserves full history including the branch join point. Rebase replays commits onto a new base for a clean linear history. Use merge for shared/protected branches, rebase for feature branches before review.
git pull vs git fetch
git fetch downloads remote updates without applying them — safe for inspection. git pull = fetch + merge in one command. Use fetch when you want to review what changed before integrating.
Reset vs Revert
git reset rewrites history (only safe before sharing). git revert creates a new "undo" commit — safe on shared branches because it never deletes history, only adds a corrective commit.
What is git stash?
Stash saves your uncommitted work to a temporary shelf so your working directory is clean. You can switch tasks, then come back and restore your saved work with git stash pop exactly where you left off.
Cherry-pick — when to use it?
When a hotfix commit needs to go to both main and a release branch — without merging all the other work in between. Cherry-pick copies that one specific commit to any branch you choose.
Branch Protection Rules
Branch protection blocks direct pushes to main and requires PRs with passing checks and minimum approved reviews. It is the key mechanism that enforces code quality in CI/CD workflows.
- git add / commit / push cycle
- git log --oneline recap
- Branch create & switch commands
- Merge vs Rebase quick reference
- Conflict resolution steps
- SSH key setup checklist
- Pull Request workflow steps
- git stash commands summary