agentleFS
CH3COOHCH3COOH/claude-skills/git-rebase/SKILL.md

git-rebase

Skill2 starsChanged 5 months agoMITView on GitHub

指定範囲のコミットを1つに統合(squash)するためのinteractive rebase手順とコミットメッセージを生成する。「コミットをまとめたい」「squashしたい」「rebaseでコミット整理」「履歴をきれいにしたい」「コミット統合」などの依頼時に使用。

  • Deletes or force-pushes
  • Commits and pushes

8 other projects use a version of this.

Adopted by

Most recently taken up by

The file

Files
SKILL.md

Git Interactive Rebase スキル

指定範囲のコミットを1つに統合(squash)するための手順とコミットメッセージを生成します。

役割の分担:

  • Claude が行う: git log / git status / git branch などの読み取りコマンドを実行し、状態を把握する
  • ユーザーが行う: git rebase -i などの履歴変更コマンドを実行する

使用例

例1: 直近3コミットをまとめる

ユーザー: 「直近3つのコミットを1つにまとめたい」 実行: git-rebase HEAD~3 HEAD 結果: 3コミットが1つのコミットに統合される

例2: 特定範囲のコミットを統合

ユーザー: 「abc1234からdef5678までのコミットをsquashして」 実行: git-rebase abc1234 def5678 結果: 指定範囲のコミットが統合され、適切なメッセージが提案される

例3: ブランチの作業をまとめる

ユーザー: 「featureブランチの全コミットを1つにしたい」 実行: mainブランチとの分岐点を特定し、rebaseコマンドを提示 結果: ブランチ上の全コミットが1つに統合される


事前バリデーション

以下を Bash ツールで確認し、問題があれば手順の提示前にユーザーへ案内すること:

チェック項目確認コマンド問題がある場合の対応
引数の数-<from-commit> と <to-commit> の両方を教えてもらう
作業ディレクトリgit status --porcelain未コミットの変更があれば先に commit または stash するよう案内
rebase中でないこと.git/rebase-merge / .git/rebase-apply の存在を確認進行中なら --abort または --continue で解決するよう案内
コミットの存在git rev-parse --verify <from-commit> / <to-commit>存在しないハッシュはユーザーに再確認
コミット順序git merge-base --is-ancestor <from> <to>from が to の祖先でない場合は順序を入れ替えるよう案内
push済みか否かgit branch -r --contains <from-commit>push済みであれば force push が必要な旨を事前に警告

問題が確認された場合は、以降の処理を行わずユーザーに解決を依頼すること。


手順

Step 1: 現在の状態を確認(Claude が実行)

git status
git branch --show-current
git log --oneline -20
  • detached HEAD 状態の場合は警告を表示

Step 2: 対象コミットの内容を分析(Claude が実行)

git log --oneline '<from-commit>^'..'<to-commit>'
git log --stat '<from-commit>^'..'<to-commit>'
git log --merges '<from-commit>^'..'<to-commit>'
  • 統合対象のコミット数・変更内容・コミットメッセージの傾向を把握する
  • マージコミットが含まれる場合は以下を案内:

    ⚠️ 対象範囲にマージコミットが含まれています。通常のrebaseではマージの履歴が失われます。 マージ履歴を保持する場合は git rebase -i --rebase-merges '<from-commit>^' を使用してください。

Step 3: Interactive rebase コマンドをユーザーに提示

from-commit がリポジトリの最初のコミット(root commit)の場合

git rebase -i --root

通常の場合

git rebase -i '<from-commit>^'

Step 4: エディタでの操作手順を説明

エディタが開いたら、以下のように編集する:

変更前:

pick abc1234 最初のコミット
pick def5678 2番目のコミット
pick ghi9012 3番目のコミット

変更後:

pick abc1234 最初のコミット
squash def5678 2番目のコミット
squash ghi9012 3番目のコミット
  • 最初のコミットは pick のまま維持
  • 2つ目以降のコミットを squash(または s)に変更
  • 保存してエディタを閉じる

Step 5: 統合後のコミットメッセージを提案

Step 2 で把握したコミット内容と、プロジェクトの既存コミットメッセージのスタイルに合わせて提案する:

<type>(<scope>): <簡潔な要約>

<詳細な変更内容>
- 変更点1
- 変更点2
- 変更点3

統合されたコミット:
- <hash1> <original message 1>
- <hash2> <original message 2>
- <hash3> <original message 3>

type の例: feat, fix, refactor, docs, style, test, chore ※ プロジェクトが Conventional Commits を使っていない場合は既存スタイルに合わせる。


出力形式

以下の順序で出力すること:

  1. 対象コミットの一覧(ハッシュ、メッセージ、変更ファイル数)
  2. 実行すべきコマンド(コピペ可能な形式)
  3. エディタでの編集手順(具体的なbefore/after例)
  4. 推奨コミットメッセージ(そのまま使用可能な形式)
  5. rebase完了後の確認コマンド
# 完了後の確認(ユーザーが実行)
git log --oneline -10
git show --stat HEAD

注意事項

リモートにpush済みのコミットの場合

⚠️ 警告: 対象コミットがリモートにpush済みの場合、rebase後に git push --force-with-lease が必要です。 他の開発者と共有しているブランチでは、チームに事前に通知してください。

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

# コンフリクトしたファイルを確認
git status

# 手動で解決後
git add <resolved-files>
git rebase --continue

# 特定のコミットをスキップする場合
git rebase --skip

トラブルシューティング

rebaseを中断したい場合

git rebase --abort

元の状態に完全に戻ります。

間違えてrebaseを完了してしまった場合

# reflogから元の状態を確認
git reflog

# 元のコミットに戻す(例:5つ前の状態)
git reset --hard HEAD@{5}

エディタが開かない・閉じてしまった場合

# rebaseを再開
git rebase --edit-todo

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.