Essential storage keeps sign-in and learning features working. Google Analytics measures visits; Microsoft Clarity records interactions to help us improve usability. Both are optional and stay off until you choose. Read our privacy policy.
Keep generated files, environment secrets, and machine-specific noise out of history before they become expensive to remove.
Treat a branch as a movable pointer, follow HEAD, and recover from detached HEAD without discarding wanted commits.
Compare common branching models and choose one that matches team size, release cadence, and review needs.
Apply selected commits in a new context, resolve cherry-pick conflicts safely, and keep source identity in the new message.
Write a useful commit message, record a root commit from the index, and prove the snapshot with log, show, and status.
Compare unstaged, staged, and committed states so you can preview exactly what the next commit will record.
Install Git, set user.name and user.email, choose a default branch name, and inspect the resulting configuration with intent.
Inspect objects and refs until commit, branch, and tag are locations in a graph rather than product-button names.
See version control as a record of decisions, not a backup folder, and learn how this course moves from a first commit to a reviewed GitHub workflow.
Navigate history with log formats, follow a single file, and inspect one commit until the snapshot and message are both clear.
Predict when Git can fast-forward, when it creates a merge commit, and how the resulting graph should be read.
Read conflict markers, choose a correct combined result, and finish the merge with a message that records the decision.
Create a feature branch, produce a genuine conflict, resolve it, and merge with a graph you can explain on paper.
Initialize a real journal repo with a README, ignore rules, two meaningful commits, and a status check you can explain.
Diagnose a cluttered working tree, recover the intended files, and leave a clean status with an explained history.
Take a change through issue, branch, pull request, review comments, and merge so the GitHub conversation matches the Git graph.
Push a repository, clone it a second time, exchange commits, and prove both copies share the intended history.
Replay commits onto a new base, edit a local series, and refuse rebase on published history that other people already use.
Find a lost commit, isolate a regression, and attribute a line of history without treating blame as a personnel tool.
Connect a local repository to a remote, update remote-tracking branches, and push without guessing which branch moves.