Overview
Version control systems (VCS) are foundational tools in modern software development. They track every change made to a codebase, allow multiple developers to collaborate without overwriting each otherβs work, and provide a complete history that can be inspected or rolled back at any point.
The distributed VCS model, pioneered by Git, gives every developer a full copy of the repository history, enabling offline work and flexible branching workflows.
Tools in This Section
Git
The dominant distributed version control system. Virtually every software project uses Git for tracking changes, branching, and merging. Created by Linus Torvalds in 2005.
GitHub
A cloud-based hosting platform for Git repositories. Adds collaboration features: pull requests, code review, issue tracking, Actions (CI/CD), and GitHub Pages for static site hosting.
Changelog
A document listing significant changes made in each version of a software project. Changelogs communicate what changed, when, and why, helping users and developers understand the evolution of a project.
Git Send-Email
The original Git contribution workflow: patches sent over email via git format-patch and git send-email, reviewed on mailing lists, applied with git am. Used by the Linux kernel, Git itself, PostgreSQL, and forges like Sourcehut.
Key Concepts
- Repository: A directory tracked by Git, containing the full history of all changes
- Commit: A snapshot of changes with a message describing what changed and why
- Branch: A parallel line of development that can be merged back into the main line
- Pull Request: A proposal to merge changes from one branch into another, with review
- Tag: A marker on a specific commit, typically used for release versions