Skip to main content
CodeSpeedTest
Languages
Start TypingJump into a test — pick any languageAdaptive TrainingUnlock chars as you master them — home row to !@#$%Practice DrillsFocused sessions targeting weak spotsDaily ChallengesNew coding challenges every dayRace ModeCompete against others in real timeAI OpponentRace against an AI at your WPM level
LeaderboardGlobal rankings for every languageCertificatesEarn verifiable Bronze / Silver / Gold certsActivityDaily streaks & historical analyticsProfileYour stats, badges & achievements
Browse Languages500+ languages with real code examplesBlogTips, guides & deep divesFAQCommon questions answeredGetting StartedNew to CodeSpeedTest?AboutOur story & mission
Pricing
Start Typing
Tools/Git Commit Typing

Git Commit Message Typing Practice

A well-formed commit message is one of the most-typed things in a developer's day. This guide covers the Conventional Commits format, every commit type with examples, and the difference between clear and vague messages.

Conventional Commits Format

type(scope): short description

[optional body]

[optional footer: BREAKING CHANGE or closes #123]
  • type — one of the commit types below (required)
  • scope — optional area of the codebase (auth, api, cart, ui…)
  • description — imperative present tense, under 72 chars, no period
  • ! after type/scope signals a breaking change

Commit Type Reference

TypePurposeExample
featA new feature for the user or systemfeat: add OAuth login with Google
fixA bug fixfix: resolve null pointer on empty cart
docsDocumentation-only changesdocs: update API authentication guide
styleFormatting, whitespace — no logic changesstyle: apply eslint auto-fix across src/
refactorCode restructure without behaviour changerefactor: extract auth logic to useAuth hook
testAdding or correcting teststest: add unit tests for price calculator
choreMaintenance, tooling, dependency updateschore: bump react to 19.0.0
perfPerformance improvementperf: memoize expensive filter on product list
ciCI/CD pipeline configuration changesci: add Node 20 to build matrix

Good vs Bad Commit Messages

Good

feat(auth): add JWT refresh token rotation
fix(cart): prevent duplicate item on fast click
refactor(api): split user route into auth and profile
chore: upgrade eslint to v9 and apply flat config
feat!: drop support for Node 16 — BREAKING CHANGE

Bad

fix stuff
updates
wip
done
changed things in the auth module to make it work better
HOTFIX

A good commit message answers "what changed and why" in one line. It should make sense in a git log without opening the diff.

Quick Rules

  • →Use the imperative mood: "add" not "added" or "adds"
  • →Keep the subject line under 72 characters
  • →No period at the end of the subject line
  • →Separate subject and body with a blank line
  • →Use the body to explain why, not what (the diff shows what)
  • →Reference issues in the footer: closes #42

Improve Your Overall Typing Speed

Writing great commit messages is a typing task too. Build the fluency that makes every line of code — and every commit — faster to produce.

Take the typing test →

Related tools

→ Terminal & Command Line Typing Practice→ Developer Keyboard Shortcut Reference
CodeSpeedTest

Improve your coding speed, code accuracy, and programming syntax WPM with practice sessions across 500+ programming languages.

Quick Links

HomeAboutFeaturesGetting StartedLanguages

Resources

Pro ⚡ PricingCertifyFAQBlogContactLeaderboardRaceChallengesFree ToolsWPM CalculatorPrivacy PolicyTerms of Service

Connect

CodeSpeedTest on GitHubCodeSpeedTest on TwitterEmail CodeSpeedTest

© 2026 CodeSpeedTest. All rights reserved.