Skip to content

Instantly share code, notes, and snippets.

@taichi
Created February 2, 2026 03:32
Show Gist options
  • Select an option

  • Save taichi/7b463af7de787fce31e03276429d2d7e to your computer and use it in GitHub Desktop.

Select an option

Save taichi/7b463af7de787fce31e03276429d2d7e to your computer and use it in GitHub Desktop.
description
コミットを論理単位に再構成(git bisect対応)

/tidy-commits

作業完了後に積み上がったコミットを、git bisectで調査しやすい論理的な単位に再構成する。

対象範囲

  • main..HEAD のコミット
  • 未コミット変更(ステージ済み・未ステージ)

実行手順

1. バックアップ作成

git tag backup/tidy-$(date +%Y%m%d-%H%M%S)

2. 変更内容の分析

以下の観点で変更を分析し、論理単位にグループ化する:

  1. 依存関係: 依存される変更が先になるよう順序付け
  2. レイヤー分離: backend / frontend / db / scripts など
  3. 機能単位: 独立した機能や修正ごとにまとめる
  4. ビルド可能性: 各コミットが単独でビルド・テスト可能

3. コミットの再構成

# 未コミット変更をステージングに追加
git add -A

# 全変更をアンステージに戻す
git reset --soft main
git reset HEAD

# 論理単位ごとにコミット作成
git add <files...>
git commit -m "<conventional commit message>"

4. コミットメッセージ形式

Conventional Commits形式で作成:

<type>(<scope>): <日本語の説明>

<詳細説明(必要に応じて)>

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

type: feat, fix, docs, chore, refactor, test, style scope: frontend, backend, server, db, scripts, config

分割の例

# Before: 1つの大きなコミット
abc1234 feat: ユーザー認証機能を追加

# After: 論理単位に分割
def5678 feat(backend): 認証スキーマとリポジトリを追加
ghi9012 feat(backend): 認証サービスを実装
jkl3456 feat(frontend): ログインフォームコンポーネントを追加
mno7890 feat(frontend): 認証状態管理を実装
pqr1234 test(backend): 認証サービスのテストを追加

復元方法

失敗時は以下のコマンドで復元:

git reset --hard backup/tidy-<timestamp>

完了時

  1. 新しいコミット履歴を表示

  2. バックアップタグの削除を案内:

    git tag -d backup/tidy-<timestamp>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment