📝
git-czでコミットメッセージが失われないようにする
とあるモノレポなリポジトリにおいてコミットメッセージを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-commit
はcommit-msg
よりも先に作動するフックだそうで順序的に不可能でした。git-czがghのように、失敗したら入力した内容を復元できるような機構を持っていてくれればよかったのですが。
Discussion