1. 程式人生 > 其它 >Good Git Commit Message

Good Git Commit Message

同步連結: https://www.shanejix.com/posts/Good Git Commit Message/

why good commit

git commit 是當次 committing 更改的簡短描述。良好的 commit message 不僅僅有利於與和他人合作,而且能很方便的追蹤工作記錄。

how to write

commit message 格式


    format: [emoji] <type>(scope): <message>

    - emoji:options

    - type: require

    - scope:require

    - message(description):  require

type

  • feat: a new feature
  • fix: a bug fix
  • improvement: an improvement to a current feature
  • docs: documention only chnage
  • style: everything related to styling
  • refactor: a code change that not neither a bug nor add a feat
  • test: everything related to testing
  • chore: updating build task,package manager config,etc

scope

當前 commit 影響範圍

descript

當前 commit 簡短描述

emojis type

one style

  • when adding a file or implementing a feature
  • when fixing a bug or issue
  • when improving code or comments
  • when improving performance
  • when updating docs or readme
  • when dealing with security
  • when updating dependencies or data
  • when a new release was built
  • when refactoring or removing linter warnings
  • when removing code or files

another style

  • [tada] initial commit
  • [Add] when implementing a new feature
  • [Fix] when fixing a bug or issue
  • [Refactor] when refactor/improving code
  • [WIP]
  • [Minor] Some small updates

gitHook

package.json

    "githook": {
      "pre-commit": "lint-staged",
      "commit-msg": "node scripts/verifyCommitMsg.js"
    }

scripts/verifyCommitMsg.js

const chalk = require("chalk");
// const msgPath = process.env.HUSKY_GIT_PARAMS;
const msgPath = process.env.GIT_PARAMS;
const msg = require("fs").readFileSync(msgPath, "utf-8").trim();

const commitRE =
  /^(v\d+\.\d+\.\d+(-(alpha|beta|rc.\d+))?)|((revert: )?(feat|fix|docs|style|refactor|perf|test|workflow|ci|chore|types)(\(.+\))?!?: .{1,50})/;

if (!commitRE.test(msg)) {
  console.error(
    `  ${chalk.bgRed.white(" ERROR ")} ${chalk.red(
      `invalid commit message format.`
    )}\n\n` +
      chalk.red(
        `  Proper commit message format is required for automated changelog generation. Examples:\n\n`
      ) +
      `    ${chalk.green(`feat(compiler): add 'comments' option`)}\n` +
      `    ${chalk.green(`fix(menu): handle events on blur (close #28)`)}\n\n` +
      chalk.red(`  See .gitlab/commit-convention.md for more details.\n`)
  );
  process.exit(1);
}

tools

commitizen

gitmoji-cli

references

作者:shanejix
出處:https://www.shanejix.com/posts/Good Git Commit Message/
版權:本作品採用「署名-非商業性使用-相同方式共享 4.0 國際」許可協議進行許可。
宣告:轉載請註明出處!