投稿日:2026/5/2
更新日:2026/5/2

cat ~/.claude/skills/clean-commits.md
フィーチャーブランチのコミット履歴を整理し、レビューしやすい最小限のコミット群に squash する。
git branch # 現在のブランチを確認
git log --oneline develop..HEAD # featureブランチ固有のコミット一覧
git diff develop...HEAD --name-only | sort # developとの差分ファイル一覧
差分ファイルの中に 今回のフィーチャーと無関係なファイル が含まれていないか確認する。
無関係ファイルが含まれている場合は Step 2(リベース)で除去を試みる。
必ずバックアップブランチを作成してから作業する。
git branch backup/<現在のブランチ名>
git fetch origin develop
git rebase origin/develop
リベース後、再度 git log --oneline develop..HEAD と git diff develop...HEAD --name-only を確認する。
他ブランチのコミットが develop にマージ済みであれば、リベースで自動的に除去される。
コンフリクトが発生した場合:
git rebase --continue で再開git rebase --abort で中断してユーザーに報告git diff develop...HEAD --name-only の結果をもとに、ファイルを論理的なグループに分類する。
分類の基準(プロジェクトに応じて調整):
| グループ | 内容の例 |
|---|---|
feat |
DBマイグレーション・スキーマ変更・サービス実装・フロントエンドの新規UI |
fix |
バグ修正・テスト修正 |
refactor |
既存コードの整理・共通化・リネーム |
chore |
ドキュメント・設定ファイルの変更(機能と無関係) |
グループが3つ以上になる場合はユーザーに確認してから進める。
# 全コミットをステージングエリアに展開
git reset --soft develop
# 全ファイルをアンステージ
git reset HEAD
グループごとに git add <ファイル> → git commit を繰り返す。
コミットメッセージのフォーマット(Conventional Commits・日本語):
<type>(<scope>): <要約(日本語)>
<詳細(任意)>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
git log --oneline develop..HEAD # コミット数・メッセージを確認
git diff develop...HEAD --name-only | sort # 差分ファイルが期待通りか確認
git status # 未コミットのファイルがないか確認
git push --force-with-lease origin <ブランチ名>
--force-with-lease を使うことで、リモートに自分以外の新しいコミットがある場合は安全にエラーになる。
force push 前にユーザーの確認を取ること。
chore(docs) のコミットが net zero(developと差分なし)の場合は squash 時に自然に消えるので個別対応不要main/master ブランチには絶対に行わない