1. 授权认证
  2. 获取用户个人信息
  3. 项目协同
  4. 代码托管
  5. 持续集成
  6. 制品仓库
  7. 测试管理
  8. 文档管理
  1. 项目协同
  2. 代码仓库
  3. DevOps 实践之旅
  4. 一分钟开始持续集成之旅
  5. 持续部署
  6. 制品库

Git commit message 规范

「git commit message」即代码提交历史,错误的提交信息会影响代码的可维护性。在多人协作开发场景下因个人风格各有不同,若无统一的规范则很容易导致混乱。

使用本地工具协助书写,提交合并请求通过持续集成强制检查,才允许合并入主干,进而实现规范化。

书写工具

全局安装 commitizen,即可使用 git cz 命令取代 git commit,提供交互式选择界面,协助书写。

npm install -g commitizen cz-conventional-changelog
echo '{ "path": "cz-conventional-changelog" }' > ~/.czrc

项目配置

在项目代码中通过 npm 安装 lint 工具(任何语言的项目都可以安装,比如 PHP、Java)。

npm install --save-dev @commitlint/cli @commitlint/config-conventional @commitlint/prompt cz-conventional-changelog husky

修改 package.json,即可实现本地提交前自动检查:

{
  "config": {
    "commitizen": {
      "path": "./node_modules/cz-conventional-changelog"
    }
  },
  "husky": {
    "hooks": {
      "commit-msg": "commitlint -E HUSKY_GIT_PARAMS"
    }
  },
  "devDependencies": {
    "@commitlint/cli": "^9.1.2",
    "@commitlint/config-conventional": "^11.0.0",
    "@commitlint/prompt": "^9.1.2",
    "cz-conventional-changelog": "^3.3.0",
    "husky": "^4.3.0"
  }
}

Jenkinsfile

在持续集成中使用下列代码,即可实现:合并请求时,对比当前分支和目标分支的 git log,进行增量检查。

pipeline {
  agent any
  stages {
    stage('检出') {
      steps {
        checkout([
          $class: 'GitSCM',
          branches: [[name: '*']],
          userRemoteConfigs: [[url: env.GIT_REPO_URL, credentialsId: env.CREDENTIALS_ID]]
        ])
        script {
          if ( env.MR_SOURCE_BRANCH ==~ /.*/ ) {
            sh "git checkout ${env.MR_TARGET_BRANCH}"
            sh "git checkout ${env.MR_SOURCE_BRANCH}"
          } else {
            sh "git checkout ${env.GIT_COMMIT}"
          }
        }
      }
    }
    stage('安装依赖') {
      steps {
        sh 'npm install'
      }
    } 
    stage('增量检查 git commit') {
      when {
        changeRequest()
      }
      steps {
        script {
          sh 'npm install'
          sh """logs=`git log --pretty=format:'%s' ${env.MR_TARGET_BRANCH}... --no-merges`;
          echo "\$logs" | while read i; do echo \$i | npx commitlint; done
          """
        }
      }
    }
  }
}

创建合并请求时触发构建

运行结果

CI 运行不通过时报错:

修改提交信息

如果 Git 提交信息不规范,有两种修改方式:

修改最后一次提交信息:

git commit --amend

修改中间某条提交信息:

git rebase -i HEAD~5

把某条前面的 pick 修改为 r,保存退出(VI 为 :x),即可进入编辑界面。


修改完毕,强制推送即可,命令:

git push -f origin issue-123

上一篇增量检查代码规范
最近更新
感谢反馈有用
感谢反馈没用

在阅读中是否遇到以下问题?

您希望我们如何改进?