# AFFiNE Git Guideline # 1. Git Branch Name - fix/ - feat/ # 2. **Commit message guidelines** AFFiNE uses [semantic-release](https://github.com/semantic-release/semantic-release) for automated version management and package publishing. For that to work, commitmessages need to be in the right format. ### **Atomic commits** If possible, make [atomic commits](https://en.wikipedia.org/wiki/Atomic_commit), which means: - a commit should contain exactly one self-contained functional change - a functional change should be contained in exactly one commit - a commit should not create an inconsistent state (such as test errors, linting errors, partial fix, feature with documentation etc...) A complex feature can be broken down into multiple commits as long as each one keep a consistent state and consist of a self-contained change. ### **Commit message format** Each commit message consists of a **header**, a **body** and a **footer**. The header has a special format that includes a **type**, a **scope** and a **subject**: `():