git-cx
2026-02-23 19:15:24 Git内容が古くなっている可能性があるのでご注意ください。
gitのコミットメッセージを、コマンドラインで選択しながら構築していくツール
Conventional Commits ☐↗ を意識したコミットメッセージを構築するためのツールです。
スクリーンショット
型の選択

スコープの選択

その他の入力

git log

使い方
設定の生成
git cx gen
Conventional Commits ☐↗ の型を含む git-cx の設定をファイルとして出力します。
生成された設定を書き換えて、自身の使う複数のリポジトリー共通の設定としたり、リポジトリーごとに異なる設定にしたりすることもできます。
git cx gen --emoji で絵文字付きのテンプレートも生成できます。
生成された設定ファイル
headerformat: '{{.type}}{{.scope_with_parens}}{{.bang}}: {{.emoji_unicode}}{{.description}}'
headerformathint: .type, .scope, .scope_with_parens, .bang(if BREAKING CHANGE), .emoji, .emoji_unicode, .description
types:
'# comment1':
desc: 'comment starts with #'
emoji: ""
'# comment2':
desc: This default definition is from https://github.com/angular/angular/blob/main/CONTRIBUTING.md#-commit-message-guidelines
emoji: ""
feat:
desc: A new feature
emoji: ':sparkles:'
fix:
desc: A bug fix
emoji: ':bug:'
docs:
desc: Documentation only changes
emoji: ':memo:'
refactor:
desc: A code change that neither fixes a bug nor adds a feature
emoji: ':recycle:'
perf:
desc: A code change that improves performance
emoji: ':zap:'
test:
desc: Adding missing tests or correcting existing tests
emoji: ':test_tube:'
build:
desc: Changes that affect the build system or external dependencies
emoji: ':package:'
ci:
desc: Changes to our CI configuration files and scripts
emoji: ':hammer:'
revert:
desc: Reverts a previous commit
emoji: ':rewind:'
denyemptytype: false
denyadlibtype: false
usebreakingchange: false
※ このサイトでは :sparkles: が ✨ に変換されるなど、絵文字向けの文字列が絵文字に変換されています。
型以外の設定
headerformat
コミットメッセージの1行目の構成を指定することができます。
例
headerformat: '{{.type}}{{.scope_with_parens}}{{.bang}}: {{.emoji_unicode}}{{.description}}'
各コンポーネントは {{.hoge}} の形式で記述します。
{{}} の外にある個所は固定の文字列として扱われます。
コンポーネント
生成された設定ファイルの2行目にある headerformathint には、記述できるコンポーネントが列挙されています。
(このフィールドは、それ自身は何か設定をしているわけではありません)
headerformathint: .type, .scope, .scope_with_parens, .bang(if BREAKING CHANGE), .emoji, .emoji_unicode, .description
.type- Conventional Commits ☐↗ の型(type)
- 選択した型に置き換わります。
.scope- スコープ(scope)
.scope_with_parens- スコープ(scope) を
()で囲んだもの - ただし、スコープが空欄だった場合は
()含めて空白に置き換わります。
- スコープ(scope) を
.bang- BREAKING CHANGEフッターがある場合に
!に置き換わります。 - ※BREAKING CHANGEフッターは、設定ファイル末尾にある
usebreakingchangeがtrueの場合にのみ入力可能です。
- BREAKING CHANGEフッターがある場合に
.emoji- 型ごとに設定できる
emojiの文字列に置き換わります。 - ※上記の設定ファイル例では、✨ のように絵文字に変換されていますが、本来の記述内容は
:sparkles:のようになっています。
- 型ごとに設定できる
.emoji_unicode- 型ごとに設定できる
emojiを絵文字に変換したものに置き換わります。 - Emoji List ☐↗ の “CLDR Short Name” にあるスペースをアンダースコア
_に置き換えたものを半角コロンで囲みます。 - 例:
:broken_heart:-> 💔
- 型ごとに設定できる
.descriptiongit-cxでは、型、スコープについで入力された、タイトル(description)に置き換わります。
denyemptytype
true を指定することで、型を必須にします。
denyadlibtype
true を指定することで、設定ファイルにある型しか選択できなくします。
usebreakingchange
true を指定することで、BREAKING CHANGEフッターの入力ができるようになります。
設定ファイルの置き場
生成された設定ファイル .cx.yaml を以下のいずれかの場所においておきます。
- gitconfig ([cx] rule={PATH_FROM_REPOS_ROOT})
- ワークツリーのルート
- 以下のディレクトリー
- {CONFIG_DIR}/git-cx/.cx.yaml
- Windows: %appdata%\git-cx.cx.yaml
- (see https://cs.opensource.google/go/go/+/go1.17.3:src/os/file.go;l=457 ☐↗ )
- git-cx があるディレクトリー
使い勝手が良いのは、2 か 3 でしょうか。
自分のメッセージのスタイルを一貫させたい場合は3が合っているでしょう。
一方で、共同開発する場合に設定を合わせたい場合は、2のように、そのリポジトリーに設定ファイルを含めてしまうのが良いでしょう。
スコープの候補
スコープはリポジトリー毎に内容が異なるのと、途中で増えることも想像されるため、型とは違い予め決めておく方式とはしませんでした。
入力されたスコープを記録しておき、それを候補として表示するようにしています。
ただし、予め、スコープの記録をするファイルを gitconfig で指定しておきます。
[cx]
scopes = myscopes.yaml
scopes には、リポジトリーのルートからのパスで指定します。
このファイルには git-cx を介してコミットをした際のスコープが記録され、結果的にスコープの候補となります。
ダウンロード
- 📄 Hugo テーマ 9. Pagefind でサイト内検索機能を付ける2026-06-15 00:11:30静的なインデックスを使った検索 UI を提供する Pagefind を組み込みます。
- 📄 Hugo テーマ 8. Shortcodes と Render hooks2026-06-15 00:11:30Markdown で記述したコンテンツ (テーマの利用側) に対して Hugo が用意した HTML 変換の仕組みを解説します。
- 📄 Hugo テーマ 7. layouts/baseof.html をいじる2026-06-15 00:11:30サイト全体に共通する、ページのレイアウト定義を編集します。
- 📄 Hugo テーマ 6. layouts/home.html をいじる2026-06-15 00:11:30トップページのレイアウト定義を編集します。
- 📄 Hugo テーマ 5. layouts/section.html をいじる2026-06-15 00:11:30content 内のディレクトリーに対応するレイアウト定義を編集します。
- 📄 Hugo テーマ 4. layouts/page.html をいじる2026-06-15 00:11:30コンテンツに対応するページのレイアウトを編集します。
- 📄 Hugo テーマ 3. 作られたファイル2026-06-15 00:11:30前回作ったテーマを構成するファイルを解説します。
- 📄 Hugo テーマ 2. まずは作ってみる2026-06-15 00:11:30テーマを作りプロジェクトに適用するところまでを解説します。
- 📄 Hugo テーマ 1. はじめに2026-06-15 00:11:30連載「Hugo テーマ」を行う背景とその方針を説明します。
- 📄 vvin2026-05-30 16:58:07Windows のウィンドウサイズを操作する CLI アプリ