git
6 free lessons tagged git across Programming. Each one is a short sequence of focused steps with narration and a five-question quiz at the end — take them in any order, no signup required.
Undo: Reset, Revert, Restore, and Getting Work Back
Git's undo commands are notoriously confusing because they are usually memorised as recipes. Read against the object model they separate cleanly: each acts on a different one of the three places content lives. This lesson maps them, covers recovery from the accidents that feel unrecoverable, and states what genuinely cannot be undone.
Merge and Rebase: Two Answers to Divergence
Every operation so far moved a pointer. Merging is the first that has to decide something: two branches changed the same project and one result must come out. This lesson covers the three-way merge and the merge base it depends on, what a conflict actually is, and why rebase produces different commits rather than moving them.
Refs: A Branch Is a File Containing a Hash
Hashes are unusable by hand, so Git names them. A branch is not a copy of anything, not a directory, and not a container for commits: it is a forty-character file. Once that is clear, checkout, reset, detached HEAD and the reflog stop being separate concepts and become one operation on one kind of file.
The Object Database: Git Is a Content-Addressed Store
Git is usually taught as a set of commands. Underneath it is a key-value store where the key is a hash of the content, and four object types built on that one idea. This lesson derives the hash by hand, shows what a commit actually contains, and explains why the design makes history tamper-evident.
Branches, Tags, and Merging in SVN
How SVN handles parallel work. Covers the trunk-branches-tags convention, cheap copies that make a branch nearly free, why branches and tags are the same mechanism, merge tracking with svn:mergeinfo, reintegrating a branch, and moving between SVN and Git with git svn.
Subversion: The Centralized Version Control Model
How Subversion (SVN) works and why it still exists in a Git world. Covers the centralized model, the central repository and working copy, global revision numbers and atomic commits, and the real reasons teams keep SVN: large binaries, path-based access control, and a single source of truth.

