Git
Unscored tasks with hints and instant feedback. Practice results never become credentials.
Short lesson
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.
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 practiseYou 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 practiseMerge 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 practiseYour 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 practiseIn ~/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 practiseWithout 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 practiseSomeone 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