Skip to content
Productivity Passport
Practice mode · free · unlimited · not certifiable

Git

Unscored tasks with hints and instant feedback. Practice results never become credentials.

Short lesson

Git recovery toolkit · 10 min

git stash for quick context switches, git reflog to find lost commits, git bisect run to find the first bad commit, git worktree add for parallel work.

L1Commit on a feature branchterminal

In ~/app create a branch feature/login, add a file src/login.js containing “export const login = () => true;”, and commit it with the message “Add login stub”.

Sign up to practise
L2Stash for a hotfixterminal

You have uncommitted work in ~/app/src/app.js. A hotfix is needed: without losing your work, create branch hotfix/port from main, change config.json port to 8081, commit “Fix port”, then return to main and restore your uncommitted work.

Sign up to practise
L3Resolve a merge conflictterminal

Merge feature/uk-vat into main in ~/app. Resolve the conflict so pricing.js has VAT 0.175 AND currency 'GBP', then complete the merge.

Sign up to practise
L3Rebase for a linear historyterminal

Your branch feature/search in ~/app is behind main. Rebase it onto main so its history is linear (no merge commits), and stay on feature/search.

Sign up to practise
L4Find the bad commit with bisectterminal

In ~/calc the test (sh test.sh) passes at the first commit but fails now. Use git bisect to find the first bad commit and enter its commit message as the answer. Reset bisect when done.

Sign up to practise
L4Parallel work with worktreesterminal

Without touching your current checkout of ~/app, create a second working folder ~/app-hotfix on a new branch hotfix/readme, and commit a README change there (“Fix typo”).

Sign up to practise
L5Recover lost commits with reflogterminal

Someone ran `git reset --hard HEAD~2` on main in ~/shop and two commits disappeared (“Add payment retry” and “Add receipts”). Create a branch named rescue that points at the lost work.

Sign up to practise