git-commit-split
Installation
SKILL.md
分割の考え方
ファイル単位ではなく 論理的な変更単位 でコミットを分ける。 1つのファイルに複数の目的の変更が含まれる場合はhunk単位で分割する。
例: ファイルA に機能αの変更と機能βの変更、ファイルB に機能αの変更と機能γの変更がある場合 → コミットは「機能α」「機能β」「機能γ」の3つに分ける。ファイル単位の3つ(A, B)ではない。
実行手順
git diff --cached --statで全体像をつかむ。git diff --cachedで全差分を読み、論理的な変更単位(目的・機能ごと)にコミット候補をリストアップする。- 候補ごとにコミットする。分割方法はケースに応じて使い分ける:
- ファイルまるごと同じ単位に属する場合:
git commit -m "<message>" -- <paths...>でコミット。 - 1ファイル内に複数単位の変更が混在する場合: まず
git reset HEAD -- <対象ファイル>でそのファイルをunstageし、git add -p -- <対象ファイル>でhunk単位(y/n)で必要な変更だけstageしてからコミットする。残りのhunkは次のコミットで再度stageする。
- ファイルまるごと同じ単位に属する場合:
- コミットのたびに
git diff --cached --statで残りのstage差分を確認する。 - 最後に
git status --short --branchを確認し、stageが空であることを確認する。