update-base-branch について
現在のworktreeを適切なベースブランチに切り替え、安全に更新するリポジトリ操作スキルです。ブランチや上流の曖昧さを確認し、ローカルの作業を保護したうえで、早送り更新のみを行います。
主な機能
- 01ブランチ、状態、worktreeの確認
- 02ベースブランチと上流の特定
- 03曖昧さやローカルコミットがあれば停止
- 04対象確認後にのみfetch
- 05現在のworktreeを切り替えて早送り更新
- 06ブランチ、コミット、上流、作業状態の検証
活用シーン
- 01設定済みの上流からworktreeを更新
- 02ブランチ更新時の未コミット変更の保護
- 03複数のベースブランチやリモート候補の確認
- 04worktreeが取得済みの上流と一致するか検証
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ sjunepark/ agent-scripts --skill update-base-branchインストール後、Claude Code で/update-base-branchを入力して読み込まれたか確認します。
同梱ファイルagents/openai.yamlevals/evals.json
詳細
ベースブランチを更新
曖昧なブランチ、リモート、ワークツリーについて推測したり、作業を破棄したりせずに、現在のワークツリーを本来のベースブランチに切り替えて更新します。
現在のワークツリーを保護する
ブランチ、ステータス、ワークツリーを確認します。変更がある場合は、対象ブランチとアップストリームを読み取り専用で調査し、コミットまたはスタッシュするよう依頼したうえで、曖昧な点を報告します。ワークツリーがクリーンであることを確認するまで、フェッチやブランチの切り替えは行いません。自動的にスタッシュしてはいけません。
対象を特定する
- ローカルブランチとリモートブランチ、およびアップストリームの設定を確認します。
- ユーザーが指定したブランチを使用します。指定がない場合は、リポジトリの情報から明確に判断できるなら、現在のワークツリーで確立されているベースブランチまたは統合ブランチを選択します。
devブランチが存在する場合は通常の候補として扱いますが、矛盾する情報を無視してよいという意味ではありません。 - 対象を特定できない場合は、候補となるブランチとそれぞれのアップストリームを示して、どのブランチを使うかユーザーに尋ねます。
- 操作は現在のワークツリー内で行います。目的のブランチが別のワークツリーでチェックアウトされている場合は、ワークツリー固有の別のベースブランチを指定するよう依頼するか、そのブランチを所有するワークツリーで操作するよう伝えます。別のワークツリーを暗黙に更新してはいけません。
アップストリームを特定する
- 選択したローカルブランチに設定されているアップストリームを特定します。
originという名前のリモートがあると想定してはいけません。 - ブランチにアップストリームが設定されていない場合、または同じブランチ名が複数のリモートに存在し、明確な選択肢がない場合は、どのリモートブランチを正として扱うかユーザーに尋ねます。
- リモートの先端に合わせるために、コミットをリセット、強制切り替え、削除、または書き換えてはいけません。
ブランチを更新する
- 対象ブランチと正とするリモートを特定してから、フェッチします。
- 切り替える前に、選択したローカルブランチがフェッチしたアップストリームの祖先であることを確認します。先行している場合も分岐している場合も、アップストリームに含まれないコミットがあるなら、同期方法を独断で選ばずに停止し、双方の状態を報告します。
- 現在のワークツリーを選択したローカルブランチに切り替えます。ユーザーがリモートのみのブランチを選択した場合は、既存の参照を上書きせずに、ローカルの追跡ブランチを作成します。
- ローカルブランチをフェッチしたアップストリームに早送りで更新します。早送りのみの更新に限定します。
- 次の点を確認します。
- 現在のワークツリーが選択したブランチ上にあること。
- そのアップストリームが、特定したリモートブランチであること。
- ローカルの
HEADが、フェッチしたアップストリームの先端と一致していること。 - ワークツリーがクリーンな状態であること。
ブランチ、アップストリーム、更新後のコミットを報告します。いずれかの条件を確認できない場合は、正確な状態を報告し、完了したと述べてはいけません。
コメント
Markdown 対応