Agent Skills by ALSEL
汎用ソフトウェア開発⭐ リポ 0品質スコア 60/100

sync-upstream

上流のArduPilotリポジトリから最新のコミットを取得し、ローカルブランチをリベースすることで、ArduPilotのフォークを上流と同期します。

description の原文を見る

Sync an ArduPilot fork with the upstream ArduPilot repository by fetching upstream commits and rebasing the local branch.

SKILL.md 本文

/sync-upstream、ArduPilotフォークをアップストリームと同期

フォークされたArduPilotリポジトリを正規のアップストリームソースと同期しています。この操作はリベースによって履歴を書き換えます。各ステップを注意深く実行してください。各コマンドを実行する前に表示してください。


ステップ1:これがArduPilot関連のリポジトリであることを確認

以下の指標を確認してください:

  • 現在のディレクトリパスに arduino/upstream または ardupilot が含まれている
  • リポジトリのルートに params/ ディレクトリが存在する
  • リポジトリのルートに Tools/ または ArduCopter/ ディレクトリが存在する
  • 既存のリモートURLが ArduPilot/ardupilot を参照している

実行:

git remote -v
pwd
ls

これらの指標がない場合、ユーザーに問い合わせてください:「これはArduPilotリポジトリではないようです。ここでsync-upstreamを実行してもよろしいですか?(yes/no)」

  • noの場合:停止します。
  • yesの場合:注意深く続行してください。

ステップ2:コミットされていない変更を確認

実行:

git status --porcelain

コミットされていない変更がある場合、停止します:「コミットされていない変更があります。アップストリームと同期する前にコミットまたはstashしてください。」

以下を提案します:

git stash push -m "WIP before upstream sync"

その後、stash後に /sync-upstream を再度実行してください。


ステップ3:アップストリームリモートを確認または追加

実行:

git remote -v

upstream という名前のリモートを探します。

upstream見つからない場合

  • ユーザーに問い合わせてください:「アップストリームリモートが見つかりません。アップストリームのURLは何ですか?」
  • ArduPilot Copterの場合、以下を提案してください:https://github.com/ArduPilot/ardupilot.git
  • ユーザーが確認するか、URLを提供するまで待ってください。
  • リモートを追加してください:
    git remote add upstream {upstream_url}
    

upstream見つかる場合、ユーザーにそのURLを表示し、続行する前にそれが正しいことを確認するよう求めてください。


ステップ4:アップストリームをフェッチ

実行:

git fetch upstream

エラーを報告してください。フェッチが失敗した場合(例:ネットワークエラー)、停止してインターネット接続を確認し、もう一度試すようユーザーに依頼してください。


ステップ5:先行/遅行ステータスを報告

このブランチがupstream/masterより何コミット先行し、何コミット遅行しているかを判定します:

git rev-list --left-right --count upstream/master...HEAD

出力は {behind}\t{ahead} です。ユーザーに報告してください:

同期ステータス:
  upstream/masterより遅行: {behind}コミット
  upstream/masterより先行: {ahead}コミット(ローカル変更)

遅行カウントが0の場合、ユーザーに告げてください:「すでにアップストリームと同期しています。同期は不要です。」と停止してください。


ステップ6:リベース前に確認

これは大きな影響を与える操作です。リベースはコミット履歴を書き換えます。

ユーザーに問い合わせてください:

続行すると、{ahead}個のローカルコミットが{behind}個の新しいアップストリームコミットの上にリベースされます。
これはローカルのコミット履歴を書き換えます。

本当に続行してもよろしいですか?(yes/no)
  • noの場合:停止してください。「同期をキャンセルしました。ブランチは変更されていません。」
  • yesの場合:続行してください。

ステップ7:アップストリームマスターへリベース

実行:

git rebase upstream/master

リベースが成功した場合: ステップ8に進みます。

リベースがコンフリクトを検出した場合:

  • 直ちに停止します。コンフリクトを自動解決しようとしないでください。
  • 実行:
    git diff --name-only --diff-filter=U
    
  • 競合する各ファイルを明確にリストアップしてください。
  • ユーザーに指示してください:
    1. エディタで各競合ファイルを開いてください。
    2. コンフリクトマーカー(<<<<<<<=======>>>>>>>)を解決してください。
    3. 各ファイルを解決した後:git add {filename}
    4. すべてのファイルが解決されたら:git rebase --continue
    5. 中止して前の状態に戻したい場合:git rebase --abort
  • 停止して待機します。さらなるコマンドは実行しないでください。

ステップ8:更新されたブランチをプッシュ

--force-with-lease を使用します(--force より安全で、他の人がその間にプッシュしていた場合は拒否されます):

git push --force-with-lease origin main

最後のフェッチ以降にリモートが変更されたためにプッシュが失敗した場合、エラーを報告して、ユーザーに進め方を問い合わせてください。


ステップ9:完了を報告

実行:

git log -1 --oneline

概要を表示します:

アップストリーム同期が完了しました。

  新しいHEAD:           {git log -1 --oneline出力}
  適用されたコミット:   {ahead}個のローカルコミットがリベースされました
  アップストリームコミット: {behind}個の新しいコミットが統合されました
  リモート:            origin main が更新されました

ライセンス: MIT(寛容ライセンスのため全文を引用しています) · 原本リポジトリ

詳細情報

作者
iam6ft7in
リポジトリ
iam6ft7in/cfg_dev_environment
ライセンス
MIT
最終更新
2026/5/11

Source: https://github.com/iam6ft7in/cfg_dev_environment / ライセンス: MIT

本サイトは GitHub 上で公開されているオープンソースの SKILL.md ファイルをクロール・インデックス化したものです。 各スキルの著作権は原作者に帰属します。掲載に問題がある場合は info@alsel.co.jp または /takedown フォームよりご連絡ください。
原作者: iam6ft7in · iam6ft7in/cfg_dev_environment · ライセンス: MIT