{
  "uid": "cogitave.learn.commits-and-versioning",
  "kind": "module",
  "href": "/modules/commits-and-versioning/",
  "title": "Commits and versioning",
  "summary": "Write Conventional Commits whose type, scope, and breaking marker drive Semantic Versioning; see how release-please turns merged commits into a human-approved Release-PR, changelog, and tag; and how the trunk-based, protected-main model gates every release.",
  "type": null,
  "products": [
    "cogitave-core"
  ],
  "roles": [
    "developer"
  ],
  "levels": [
    "intermediate"
  ],
  "subjects": [
    "software-engineering"
  ],
  "headings": [],
  "source": "By the end of this module, you'll be able to:\n- Write a Conventional Commits 1.0.0 message - `<type>[scope][!]: <desc>` - and choose the type, scope, and breaking marker deliberately.\n- Explain how commit types drive Semantic Versioning: `feat` to MINOR, `fix` to PATCH, a break to MAJOR, and how pre-1.0 changes that rule.\n- Describe how release-please turns merged commits into a human-approved Release-PR, a Keep a Changelog entry, and a SemVer tag - and which repos use release-plz, goreleaser, or Changesets instead.\n- Place a commit inside the trunk-based, protected-main branching and release flow, from feature branch to gated release.\n",
  "units": [
    "cogitave.learn.commits-and-versioning.introduction",
    "cogitave.learn.commits-and-versioning.conventional-commits-in-depth",
    "cogitave.learn.commits-and-versioning.versioning-and-releases",
    "cogitave.learn.commits-and-versioning.knowledge-check",
    "cogitave.learn.commits-and-versioning.summary"
  ],
  "durationInMinutes": 28,
  "badge": "cogitave.learn.commits-and-versioning.badge",
  "partOf": "cogitave.learn.paths.engineering-standards"
}