📝

git-czでコミットメッセージが失われないようにする

2023/01/28に公開

とあるモノレポなリポジトリにおいてコミットメッセージをConventional Commitsで運用しています。

コミットメッセージを入力する際、typeやscopeを自分で入力するのが面倒ということもありgit-czを使って対話的にコミットしていますが、ときどきlint-stagedを使ったpre-commitでのlintに失敗しコミットが中断され、コミットメッセージが失われてしまうことがありました。

これを以下のようにすると回避できました。具体的にはgit-czを実行する前にlint-stagedを実行してしまうというものです。

package.json
{
  "scripts": {
    "commit": "npx lint-staged && npx git-cz --no-verify"
  }
}

Gitのcommit-msgのフックでメッセージをバックアップできないか、とか.git/COMMIT_EDITMSGに保存されていたりしないか、とか調べたのですがpre-commitcommit-msgよりも先に作動するフックだそうで順序的に不可能でした。git-czがghのように、失敗したら入力した内容を復元できるような機構を持っていてくれればよかったのですが。

Discussion