YASD-TECH
YASD TECH
# Instructions

git コミット整理

投稿日:2026/5/2

更新日:2026/5/2

ttitleImage

cat ~/.claude/skills/clean-commits.md


name: clean-commits
description: フィーチャーブランチのコミット履歴を整理する。他ブランチのマージコミットが混入している場合にリベースで除去し、残ったコミットを論理的なグループに squash してforce push する。「コミットを整理して」「コミット履歴をきれいにして」などと言ったときに使う。
allowed-tools: [Bash, Read, Glob, Grep]

Clean Commits

フィーチャーブランチのコミット履歴を整理し、レビューしやすい最小限のコミット群に squash する。


実行フロー

Step 1: 現状確認

git branch           # 現在のブランチを確認
git log --oneline develop..HEAD   # featureブランチ固有のコミット一覧
git diff develop...HEAD --name-only | sort  # developとの差分ファイル一覧

差分ファイルの中に 今回のフィーチャーと無関係なファイル が含まれていないか確認する。
無関係ファイルが含まれている場合は Step 2(リベース)で除去を試みる。


Step 2: バックアップ作成

必ずバックアップブランチを作成してから作業する。

git branch backup/<現在のブランチ>

Step 3: origin/develop の最新を取得してリベース

git fetch origin develop
git rebase origin/develop

リベース後、再度 git log --oneline develop..HEADgit diff develop...HEAD --name-only を確認する。
他ブランチのコミットが develop にマージ済みであれば、リベースで自動的に除去される。

コンフリクトが発生した場合:

  • 内容を確認して手動解消
  • git rebase --continue で再開
  • 解消不能な場合は git rebase --abort で中断してユーザーに報告

Step 4: コミットグループの計画

git diff develop...HEAD --name-only の結果をもとに、ファイルを論理的なグループに分類する。

分類の基準(プロジェクトに応じて調整):

グループ 内容の例
feat DBマイグレーション・スキーマ変更・サービス実装・フロントエンドの新規UI
fix バグ修正・テスト修正
refactor 既存コードの整理・共通化・リネーム
chore ドキュメント・設定ファイルの変更(機能と無関係)

グループが3つ以上になる場合はユーザーに確認してから進める。


Step 5: コミットの squash

# 全コミットをステージングエリアに展開
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>

Step 6: 最終確認

git log --oneline develop..HEAD    # コミット数・メッセージを確認
git diff develop...HEAD --name-only | sort  # 差分ファイルが期待通りか確認
git status                         # 未コミットのファイルがないか確認

Step 7: Force Push

git push --force-with-lease origin <ブランチ>

--force-with-lease を使うことで、リモートに自分以外の新しいコミットがある場合は安全にエラーになる。

force push 前にユーザーの確認を取ること。


注意事項

  • バックアップは必ず作成する(Step 2 を省略しない)
  • chore(docs) のコミットが net zero(developと差分なし)の場合は squash 時に自然に消えるので個別対応不要
  • リベース後に差分ファイルがまだ無関係なものを含む場合は、ユーザーに報告して判断を仰ぐ
  • force push は main/master ブランチには絶対に行わない

Index

  • name: clean-commitsdescription: フィーチャーブランチのコミット履歴を整理する。他ブランチのマージコミットが混入している場合にリベースで除去し、残ったコミットを論理的なグループに squash してforce push する。「コミットを整理して」「コミット履歴をきれいにして」などと言ったときに使う。allowed-tools: [Bash, Read, Glob, Grep]
  • Clean Commits
  • 実行フロー
  • Step 1: 現状確認
  • Step 2: バックアップ作成
  • Step 3: origin/develop の最新を取得してリベース
  • Step 4: コミットグループの計画
  • Step 5: コミットの squash
  • Step 6: 最終確認
  • Step 7: Force Push
  • 注意事項