在交互式rebase期间使用git的prepare-commit-msg挂钩

时间:2019-08-21 06:23:51

标签: git git-rebase commitizen

在lerna / yarn monorepo中,我们使用commitizencz-conventional-changelog来管理发布。我们使用huskycommit-msg钩子中提交消息,并在prepare-commit-msg钩子中运行commitizen cli:

  "husky": {
    "hooks": {
      "commit-msg": "commitlint -E HUSKY_GIT_PARAMS",
      "pre-commit": "lint-staged",
      "prepare-commit-msg": "exec < /dev/tty && yarn commit --hook || true"
    }
  },

只要不需要重新设置基准,此方法就可以正常工作,但是,尽管我们的团队仍在学习中,但是我们经常需要对功能分支进行重新定位,以修复提交消息。

git rebase --interactive origin/master

在运行rebase时,如果我选择reword命令,我将能够在编辑器中编辑commit消息,但是commitizen cli将无法运行,换句话说,没有什么可以阻止我们执行提交错误的提交消息。

虽然我们在CI中执行lint commit消息,但我宁愿通过在所有阶段强制使用commitizen CLI向导来完全避免此问题。

问题:

我可以将git配置为在进行基础prepare-commit-msg操作期间使用reword钩子吗?

1 个答案:

答案 0 :(得分:1)

git rebase运行pre-rebasepost-rewrite钩子。我怀疑它是否还会挂其他钩子。

我认为您可以在每次重新提交提交后使用git rebase --exec运行验证脚本。任何错误代码都会暂停变基过程。