mcpField
U
update-base-branch

update-base-branch

github.com/sjunepark開発147 回インストール4 週間前に更新
リポジトリ

update-base-branch について

現在のworktreeを適切なベースブランチに切り替え、安全に更新するリポジトリ操作スキルです。ブランチや上流の曖昧さを確認し、ローカルの作業を保護したうえで、早送り更新のみを行います。

主な機能

  1. 01ブランチ、状態、worktreeの確認
  2. 02ベースブランチと上流の特定
  3. 03曖昧さやローカルコミットがあれば停止
  4. 04対象確認後にのみfetch
  5. 05現在のworktreeを切り替えて早送り更新
  6. 06ブランチ、コミット、上流、作業状態の検証

活用シーン

  1. 01設定済みの上流からworktreeを更新
  2. 02ブランチ更新時の未コミット変更の保護
  3. 03複数のベースブランチやリモート候補の確認
  4. 04worktreeが取得済みの上流と一致するか検証

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/sjunepark/agent-scripts --skill update-base-branch

インストール後、Claude Code で/update-base-branchを入力して読み込まれたか確認します。

同梱ファイルagents/openai.yamlevals/evals.json

詳細

ベースブランチを更新

曖昧なブランチ、リモート、ワークツリーについて推測したり、作業を破棄したりせずに、現在のワークツリーを本来のベースブランチに切り替えて更新します。

現在のワークツリーを保護する

ブランチ、ステータス、ワークツリーを確認します。変更がある場合は、対象ブランチとアップストリームを読み取り専用で調査し、コミットまたはスタッシュするよう依頼したうえで、曖昧な点を報告します。ワークツリーがクリーンであることを確認するまで、フェッチやブランチの切り替えは行いません。自動的にスタッシュしてはいけません。

対象を特定する

  1. ローカルブランチとリモートブランチ、およびアップストリームの設定を確認します。
  2. ユーザーが指定したブランチを使用します。指定がない場合は、リポジトリの情報から明確に判断できるなら、現在のワークツリーで確立されているベースブランチまたは統合ブランチを選択します。dev ブランチが存在する場合は通常の候補として扱いますが、矛盾する情報を無視してよいという意味ではありません。
  3. 対象を特定できない場合は、候補となるブランチとそれぞれのアップストリームを示して、どのブランチを使うかユーザーに尋ねます。
  4. 操作は現在のワークツリー内で行います。目的のブランチが別のワークツリーでチェックアウトされている場合は、ワークツリー固有の別のベースブランチを指定するよう依頼するか、そのブランチを所有するワークツリーで操作するよう伝えます。別のワークツリーを暗黙に更新してはいけません。

アップストリームを特定する

  1. 選択したローカルブランチに設定されているアップストリームを特定します。origin という名前のリモートがあると想定してはいけません。
  2. ブランチにアップストリームが設定されていない場合、または同じブランチ名が複数のリモートに存在し、明確な選択肢がない場合は、どのリモートブランチを正として扱うかユーザーに尋ねます。
  3. リモートの先端に合わせるために、コミットをリセット、強制切り替え、削除、または書き換えてはいけません。

ブランチを更新する

  1. 対象ブランチと正とするリモートを特定してから、フェッチします。
  2. 切り替える前に、選択したローカルブランチがフェッチしたアップストリームの祖先であることを確認します。先行している場合も分岐している場合も、アップストリームに含まれないコミットがあるなら、同期方法を独断で選ばずに停止し、双方の状態を報告します。
  3. 現在のワークツリーを選択したローカルブランチに切り替えます。ユーザーがリモートのみのブランチを選択した場合は、既存の参照を上書きせずに、ローカルの追跡ブランチを作成します。
  4. ローカルブランチをフェッチしたアップストリームに早送りで更新します。早送りのみの更新に限定します。
  5. 次の点を確認します。
    • 現在のワークツリーが選択したブランチ上にあること。
    • そのアップストリームが、特定したリモートブランチであること。
    • ローカルの HEAD が、フェッチしたアップストリームの先端と一致していること。
    • ワークツリーがクリーンな状態であること。

ブランチ、アップストリーム、更新後のコミットを報告します。いずれかの条件を確認できない場合は、正確な状態を報告し、完了したと述べてはいけません。

コメント