Git in Practice
The everyday craft of Git on a real team: hairy merges, rebase, clean commit history, stash and cherry-pick, branching models and pull requests, releases, reflog rescue, hooks, and the config that pays for itself.
Start courseWhat you will cover
- Merging and Resolving ConflictsHandle a genuinely hairy merge with a process rather than luck: the merge base, zdiff3 conflict style, modify/delete and rename conflicts, and verifying a merge before you trust it.35 min
- Rewriting History with RebaseWhat rebase actually does to your commits, merge versus rebase as a real trade-off, the ours/theirs inversion, rebase --onto, and force-pushing with --force-with-lease.35 min
- Interactive Rebase and Clean CommitsTurn a messy branch into commits a reviewer will thank you for. Every todo verb, splitting a commit, the --fixup and --autosquash workflow, and rebase --exec.35 min
- Stashing Work in ProgressPut work down safely and pick it up again: push with a message, apply versus pop, the untracked-file trap, partial stashes, what a stash really is, and recovering a dropped one.30 min
- Cherry-picking and Moving CommitsCopy a commit onto another branch and live with the duplicate: ranges, -x for backports, conflict handling, patch-id detection, and moving work with format-patch when there is no shared remote.35 min
- Branching Models for TeamsGitHub Flow, trunk-based development and Git Flow compared honestly, plus release and hotfix branches, the real cost of long-lived branches, and how to keep one current.35 min
- Pull Requests and Code ReviewThe pull request lifecycle end to end, the three merge buttons and what each does to history, reviewing locally, git range-diff, force-pushing under review, CODEOWNERS and forks.35 min
- Tags, Releases, and VersioningCut a release that is reproducible a year later. Annotated versus lightweight tags, pushing and never moving tags, git describe, semantic versioning, and changelogs from history.30 min
- Recovering Lost Work with the ReflogA rescue manual organised by symptom: bad reset, deleted branch, botched rebase, lost amend, dropped stash — plus git fsck, and the one category of loss that is permanent.30 min
- Automating Git with HooksMake the repository catch its own mistakes. Every hook worth knowing, two complete scripts you can paste, core.hooksPath so they travel with a clone, hook managers, and why hooks are not enforcement.35 min
- .Gitattributes and Config That Pays for ItselfThe committed half of Git automation: line endings, diff and merge drivers, linguist attributes, export-ignore, plus conditional includes and the settings that remove daily friction.35 min