rebaseplan について
rebaseplanは、Git rebaseを準備する開発者向けのコマンドラインツール兼MCPサーバーです。指定されたコミット履歴と上流の状態を分析し、リポジトリを変更せずに戦略、リスク警告、手順を提示します。
主な機能
- 01rebase戦略の提案
- 02マージコミットとsquashマーカーの検出
- 03公開済み履歴のリスク評価
- 04順序付きのrebase・push手順
- 05パスを示す入力エラー
活用シーン
- 01履歴を書き換える前のブランチ評価
- 02マージやsquashコミットに応じた戦略選択
- 03公開済みブランチの安全なpush計画
MCP 対応
MCPサーバーは`plan_rebase`ツールを公開します。ブランチのコミット、任意の上流コミット、公開状態を受け取り、警告付きのrebase計画を返します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
1掲載時のツール一覧 · 1 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| commits | array | はい | ブランチ固有のコミット(古い順):{hash, subject, merge} |
| published | boolean | いいえ | ブランチがプッシュ済み、または共有済みかどうか(任意) |
| upstream_commits | array | いいえ | 上流ブランチにはあり、このブランチにはないコミット(任意):{hash, subject} |
詳細
rebaseplan
ブランチのリベースは始めるのは簡単ですが、取り消すのは困難です。 特に、ほかの人が古い履歴を持っている場合はなおさらです。危険な 部分は、ブランチ名からは見えないことがほとんどです。通常のリベースで 平坦化されるマージコミット、元のコミットも上流に存在する可能性がある スカッシュマージのマーカー、大幅に先行した上流ブランチ、そして 書き換えによって孤立する公開済みの履歴などです。rebaseplan は 開始前にこうした状態を読み取り、予期せぬ事態ではなく計画を返します。
ブランチ独自のコミットを古い順に、それぞれハッシュ、件名、必要に応じて マージコミットであることを示すフラグとともに渡します。さらに、この ブランチにない上流のコミットを渡し、ブランチがプッシュ済みまたは共有済みか どうかを指定できます。フェッチ、リベース、プッシュは行いません。 このツールは数を数えて助言するだけです。
コミットがスカッシュマーカーと見なされるのは、次の2つの場合に限られます。
件名が Squashed commit で始まる場合、または GitHub のスカッシュマージの
サフィックス((#123) など)で終わる場合です。固定されたテストは
正規表現 /\(#\d+\)$/ です。件名の内容にかかわらず、上流のコミットが
マーカーとして数えられることはありません。
強制プッシュのリスクは固定の表に従います。未公開のブランチは low です。
マージコミットもスカッシュマーカーもない公開済みブランチは medium です。
どちらかがある公開済みブランチは high です。
推奨戦略は、最初に一致した条件で選ばれます。マージコミットがある場合は
rebase_with_merge_preservation、それ以外でスカッシュマーカーがある場合は
interactive_squash_cleanup、どちらもない場合は linear_rebase です。
両方ある場合は、スカッシュマーカーよりマージ履歴が優先されます。
手順は必ず上流のフェッチから始まり、リベース後の HEAD でテストスイートを
実行するところで終わります。また、プッシュ方法も指定します。公開済み
ブランチでは、最初にバックアップブランチを作成してから --force ではなく
必ず --force-with-lease を使用します。未公開のブランチでは通常の
プッシュを行います。警告は、マージコミット、スカッシュマーカー、上流が
10件以上先行していること(正確な件数にかかわらず、警告文は固定)、
公開済み履歴の書き換えの順に示されます。
不正な入力(commits がない、空、または配列でない場合、エントリーの
hash または subject がない、空、もしくは文字列でない場合、merge が
真偽値でない場合、upstream_commits のエントリーの型が不正な場合、
または published が真偽値でない場合)は、該当するパスを示す検証
エラーとなり、部分的な結果は返されません。未知の追加フィールドは無視されます。
CLI
npx @reneturcios/rebaseplan plan --input args.json
npx @reneturcios/rebaseplan --version
args.json には、引数オブジェクト全体が含まれます。
{
"commits": [
{ "hash": "a1b2c3", "subject": "Add login form" },
{ "hash": "d4e5f6", "subject": "Merge branch 'main'", "merge": true }
],
"upstream_commits": [
{ "hash": "f7a8b9", "subject": "Bump dependencies" }
],
"published": true
}
upstream_commits の既定値は []、published の既定値は false です。
各コミットの merge の既定値は false です。結果は JSON として
出力されます。
{
"commit_count": 2,
"merge_commits": 1,
"squash_markers": 0,
"upstream_new_commits": 1,
"published": true,
"force_push_risk": "high",
"recommended_strategy": "rebase_with_merge_preservation",
"steps": [
"fetch upstream before planning the final rebase",
"create a backup branch pointing at the current head",
"rebase onto upstream preserving merge commits",
"run the test suite on the rebased head",
"push with --force-with-lease, never plain --force"
],
"warnings": [
"history contains merge commits; a plain rebase will flatten them",
"branch is published; rewriting it rewrites history others may have based work on"
]
}
終了コード:成功時は 0、実行時エラー(読み取り不能または無効な入力
ファイル、無効な入力を含む)の場合は 1、使用方法のエラーの場合は 2 です。
MCP サーバー
npx -y @reneturcios/rebaseplan mcp
MCP クライアントの設定:
{
"mcpServers": {
"rebaseplan": {
"command": "npx",
"args": ["-y", "@reneturcios/rebaseplan", "mcp"]
}
}
}
ツール
-
plan_rebase— 開始前に安全なリベースを計画します。commits(配列、必須、空でないこと)— ブランチ独自のコミットを古い順に指定します:{hash, subject, merge}upstream_commits(配列、任意、既定値[])— このブランチにない上流ブランチのコミットを指定します:{hash, subject}published(真偽値、任意、既定値false)— ブランチがプッシュ済みまたは共有済みかどうか
{commit_count, merge_commits, squash_markers, upstream_new_commits, published, force_push_risk, recommended_strategy, steps, warnings}を返します。
Docker
docker run -i ghcr.io/cloudcorprecords/rebaseplan
docker run --rm -v "$PWD:/w" ghcr.io/cloudcorprecords/rebaseplan plan --input /w/args.json
開発
npm install
npm run build # tsc -> dist/
npm test # tsx --test test/*.test.ts (pure local, no network)
npm run dev # run the CLI from source
ライセンス
MIT — Copyright (c) 2026 Rene Turcios
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。