glossaryA versioning scheme using a MAJOR.MINOR.PATCH number format where each component increments according to the nature of the changes: breaking changes, new features, and bug fixes respectively.
Semantic Versioning (SemVer), defined at semver.org, specifies that a version number takes the form MAJOR.MINOR.PATCH. MAJOR is incremented for incompatible API changes, MINOR for new backwards-compatible functionality, and PATCH for backwards-compatible bug fixes. Pre-release labels (1.0.0-alpha.1) and build metadata (1.0.0+build.1) are also supported. The direct connection between Conventional Commits and SemVer is one of the key motivations for the specification. Automated release tools like semantic-release and release-please read the commit history, identify the highest-impact change type (breaking change > feat > fix), and compute the next SemVer accordingly. This removes the manual decision of which version number to use next. For library authors, SemVer communicates contract stability to downstream consumers. A MAJOR bump signals that consumers must make changes; a MINOR bump adds capability without breaking anything; a PATCH bump is safe to apply without testing changes in consuming code.
feat!: remove deprecated v1 API endpoints # triggers MAJOR bumpfeat(payment): add Apple Pay integration # triggers MINOR bumpfix(checkout): correct tax rounding on fractional cents # triggers PATCH bumpchore(deps): upgrade dev dependencies # no version bumpgit-agent ensures your commit history speaks SemVer accurately. By generating correctly typed conventional commits, it gives semantic-release and release-please the signal they need to compute the right version bump automatically.
brew install gitagenthq/tap/git-agentHow does git-agent signal a breaking change?Does git-agent integrate with semantic-release or release-please?Should every commit type affect the version number?