Files
gh-masseater-claude-code-pl…/commands/organize-commits.md
2025-11-30 08:39:27 +08:00

4.0 KiB
Raw Blame History

現在の変更を関心ごと単位で分析し、レビューしやすい論理的なコミットに整理します

関心ごと単位でのコミット整理

現在のブランチの変更内容を分析し、レビュアーが理解しやすいように関心ごと単位で論理的なコミットに整理してください。

実行手順

1. 現在の状態確認

  • git statusで変更ファイル一覧を取得
  • git diffで未ステージの変更を確認
  • git diff --stagedでステージ済みの変更を確認
  • デフォルトブランチを確認: git symbolic-ref refs/remotes/origin/HEAD | sed 's@^refs/remotes/@@'
    • 取得できない場合はgit remote show origin | grep 'HEAD branch' | awk '{print $NF}'で確認

2. 変更内容の分析と分類

以下の観点で変更をグループ化:

関心ごとの分類基準

  • 機能追加: 新しい機能の実装
  • バグ修正: 既存のバグの修正
  • リファクタリング: コードの改善(動作は変わらない)
  • スタイル調整: フォーマット、インデント、空白の調整
  • 型定義: TypeScriptの型定義の追加・修正
  • 設定変更: 設定ファイルtsconfig, package.json等の変更
  • 依存関係: パッケージの追加・更新・削除
  • テスト: テストコードの追加・修正
  • ドキュメント: README、コメント等の更新
  • ビルド/CI: ビルドツール、CI/CD設定の変更

3. コミット計画の提示

📊 変更内容の分析結果
━━━━━━━━━━━━━━━━━━━━━━━━━━━
合計: X ファイル変更

🎯 推奨コミット構成:

[1] feat: [機能の説明]
    影響ファイル:
    - src/components/NewFeature.tsx
    - src/hooks/useNewFeature.ts

[2] fix: [バグ修正の説明]
    影響ファイル:
    - src/utils/calculation.ts

[3] refactor: [リファクタリング内容]
    影響ファイル:
    - src/components/OldComponent.tsx

[4] chore: [その他の変更]
    影響ファイル:
    - package.json
    - tsconfig.json
━━━━━━━━━━━━━━━━━━━━━━━━━━━

4. 実行確認

ユーザーに以下を確認:

  • 提案したコミット構成でよいか
  • コミットメッセージの修正が必要か
  • 特定のファイルの所属グループを変更したいか

5. コミットの実行

承認後、以下の手順で実行:

  1. 全ての変更を一旦アンステージ: git reset
  2. 各グループごとに:
    • 関連ファイルをステージング: git add [files]
    • 意味のあるコミットメッセージでコミット
    • Conventional Commitsフォーマットを使用

コミットメッセージのフォーマット

<type>(<scope>): <subject>

<body>

<footer>

Type:

  • feat: 新機能
  • fix: バグ修正
  • docs: ドキュメントのみの変更
  • style: コードの意味に影響しない変更
  • refactor: バグ修正や機能追加を伴わないコード変更
  • perf: パフォーマンス改善
  • test: テストの追加・修正
  • chore: ビルドプロセスやツールの変更

6. 最終確認

  • 確認したデフォルトブランチを使用して:
    • git log --oneline [デフォルトブランチ]..HEADでデフォルトブランチからの差分コミットを表示
    • git diff [デフォルトブランチ]...HEAD --statで変更ファイルの統計を確認
  • 各コミットが独立してビルド可能か確認
  • レビュアーの視点で理解しやすいか確認

注意事項

  • 一つのコミットは一つの論理的な変更単位にする
  • コミットメッセージは変更の「なぜ」を説明する
  • 大きすぎるコミットは避ける理想は100行以下の変更
  • 関連性の低い変更を同じコミットに含めない
  • WIPコミットは作らず、完成した変更のみコミット
  • デフォルトブランチは必ず動的に確認して使用する

$ARGUMENTS