To maintain a consistent and readable commit history, all commits should follow the conventions outlined below:
Function | Commit Message Format | Example |
---|---|---|
New feature for the user, not a new feature for build script | feat: <description> |
feat: Add document applying link to a profile |
Bug fix for the user, not a fix to a build script | fix: <description> |
fix: Fix undesired behavior when printing a document |
Changes to the documentation | docs: <description> |
docs: Change the API endpoint info |
Formatting, missing semicolons, etc.; no production code changes | style: <description> |
style: Add comma to several comments |
Refactoring production code, e.g. renaming a variable | refactor: <description> |
refactor: Rename PengajuanVisaView to VisaApplicationView |
Adding missing tests, refactoring tests, no production code change | test: <description> |
test: Unit testing for Identity Repository |
Changes to build process or libraries | chore: <description> |
chore: Add lottie and swiftlint |
In addition to the message format, each commit should adhere to the following rules:
-
Descriptive Commit Messages:
- Commit messages should be written in the imperative form and clearly describe the action taken.
- Example:
feat: Add login button to profile page
-
One Change per Commit:
- Each commit should focus on a single change (feature, bug fix, refactor, etc.). Avoid mixing multiple changes in the same commit.
-
Commit Prefix Format:
- If using issue tracking (e.g., JIRA), prefix your commit message with the issue key in the following format:
- Format:
(MERGE)-JIRAXXX-<description>
- Example:
(MERGE)-JIRA123-feat: Add login button to profile page
- Format:
- If using issue tracking (e.g., JIRA), prefix your commit message with the issue key in the following format:
-
UI/Visual Changes:
- For commits that involve UI changes, consider attaching a video or GIF showing the before and after, making it easier for others to review the visual impact.
-
Frequent, Small Commits:
- Commit small changes frequently rather than waiting for larger batches of work. This makes it easier to isolate and debug issues when necessary.