Skip to main content
Skip to content

GitHub Copilot CLI での操作の取り消しと変更のロールバック

アクティブな Copilot CLI 操作を停止するか、セッションを巻き戻して会話履歴の変更を元に戻し、必要に応じてファイルを復元します。

イントロダクション

対話型 Copilot CLI セッションで作業する場合は、進行中の作業を停止するか、既に完了した作業を元に戻すことができます。

  • 操作を取り消すには、+ または CtrlC を使用します。 これらのキーの動作は、Copilot が有効かどうか、プロンプトがキューに登録されているか、またはダイアログが開いているかによって異なります。
  • Copilotするには、/undo がアイドル状態のときに Esc キーを 2 回押すか、/rewind スラッシュ コマンドまたはその **** エイリアスを使用します。

ロールバックするときに、会話のみを巻き戻すか、Copilot が変更したファイルも復元するかを選択できます。

巻き戻しは、Git リポジトリではないフォルダーを含め、任意のディレクトリで動作します。 Copilot が変更したファイルのみを復元します。

操作の取り消し

段階的な狙った操作が必要な場合は、Esc を使用します。 Copilotが動作している間、最初に押すとリマインダーが表示され、2回目の押下で動作が中断されます。 また、1 回押すと、開いているダイアログが閉じるか、保留中のアクセス許可要求が拒否されます。

Ctrl+C は、Esc で必要な確認のための 2 回目のキー押下を行わずにキャンセルしたい場合に使用します。 1 つの Ctrl+C は、アクティブな操作を直ちに取り消し、キューに入ったプロンプトをクリアします。 既に進行中のファイルの書き込みは完了します。ファイルは書き込み中に破損したままにされませんが、残りの計画された変更は破棄されます。

  • キーを 2 秒以内に 2 回押すと、入力領域が空になると、セッションが完全に終了します。

Esc キーを押すとさまざまな状況で実行される内容

Esc キーを押した場合の影響は、セッションの現在の状態によって異なります。

| 現在の状態 | Esc キーを押した場合の動作 | | ------------- | --------------------------------- | | Copilot はアクティブであり、キューに登録されたプロンプトはありません。 | 「もう一度 Esc を押すとキャンセル」というメッセージを表示します。 操作を取り消すには、半秒以内にもう一度 Esc キーを押してください。 | | Copilot はアクティブであり、プロンプトはキューに登録されます。 | キャンセルのリマインダーを表示します。 Esc キーをもう一度押すと、現在の操作が中断されます。 ローカル セッションでは、キューに登録されたプロンプトが次のターンとして処理されます。 リモートでサポートされる、またはアタッチされたセッションでは、操作は完全にキャンセルされ、キューに登録されたプロンプトはフォローアップ ターンとして実行されません。 | | アクセス許可ダイアログが開いています。 | 2 回目の押しを必要とせずに、保留中の要求を拒否します。 | | ダイアログ、オーバーレイ、またはピッカーが開いています。 | ダイアログ、オーバーレイ、またはピッカーを閉じます。 | | Copilot がアイドル状態です。 | すばやくもう一度 Esc キーを押すと巻き戻しピッカーが開くという通知が表示されます。 |

Esc キーをすばやく 2 回続けて押すと、Copilotがアイドル状態で、かつ入力領域が空のときにのみ、巻き戻しピッカーが開きます。 その他の状況では、Esc を2回押すと、次の順序で最初の適用可能なアクションを実行します。

  1. 実行中のシェル コマンドを取り消します。
  2. 現在の応答を停止します。
  3. バックグラウンド エージェントを停止します。
  4. 入力領域のテキストをクリアします。

ダブル Esc キーを押してロールバックする

警告

  • 巻き戻しを取り消すことはできません。 ロールバックすると、後のセッション履歴は完全に削除されます。
  • ファイルを復元する場合、Copilot は変更したファイルのみを復元し、現在の内容が Copilot が最後に書き込んだ内容と一致しなくなったファイルをスキップするため、後で独自に加えた編集が上書きされることはありません。

前提条件

  • 巻き戻しポイントが存在する必要があります。 セッションで最初のプロンプトの前にロールバックすることはできません。
  • ファイルの復元は、ファイルの変更を追跡したセッションでのみ使用できます。 ファイル変更の追跡が有効になる前に開始したセッションを再開すると、会話の巻き戻しのみが提供されます。 ファイルの変更を復元できるように、新しいセッションを開始してください。
  • 巻き戻しは、リモートでバックアップされたセッションでは使用できません。また、セッションに未完了の作業がある場合も使用できません。

Copilot が、入力したプロンプトへの応答を完了したら:

  1. 入力領域が空で、作業が進行中でないことを確認します。 入力領域にテキストがある場合、 Esc キーを 2 回連続して押すと、ピッカーを開くのではなく、テキストがクリアされます。

  2. Esc キーを 2 回連続して押すと、巻き戻しピッカーが開きます。

    ピッカーには、現在のセッションで利用可能な巻き戻しポイントが新しいものから順に一覧表示されます。 最新の 10 個のポイントが一度に表示されます。 10 個を超える場合は、↑ キーと ↓ 方向キーを使用してそれらをスクロールします。 各巻き戻しポイントに対して、入力したプロンプトの先頭と、送信してからどれくらい時間が経ったかが表示されます。 ファイルを変更したターンの場合、そのターンによって追加および削除された行の数も表示されます。

  3. 巻き戻しポイントを選択し、 Enter キーを押します。

    巻き戻しポイントを選択すると、アクション メニューが開き、[ 会話のみ ] または [ 会話 + ファイル] を選択できます。 巻き戻しポイントは、そのターンもそれ以降のどのターンも復元可能なファイルを変更していない場合、使用できません。 復元する前に、Copilot に変更内容をファイルごとにプレビュー表示されるので、確認できます。

    メモ

    巻き戻しは、プロンプトでの作業を開始する直前の状態に対して適用されますCopilot。プロンプトでの作業が完了した直後ではありません。

    選択したプロンプトが入力領域に表示されるので、必要に応じて編集して再送信できます。

/undoスラッシュ コマンドを使用してロールバックする

/undoスラッシュ コマンドとそのエイリアス /rewindは、巻き戻しピッカーを開く別の方法を提供します。

どちらのコマンドも、がアイドル状態で、入力領域にテキストがない場合に Copilot キーを 2 回押すと得られるのと同じ結果になります。

ロールバックを行うと何が起こるか

会話を巻き戻してファイルを復元する場合:

  1. Copilot は、変更したファイルを、選択したプロンプトによって変更される前の状態に復元します。 後で編集したファイルはスキップされます。
  2. 選択したポイントに会話が巻き戻されます。 その時点以降のメッセージとツール呼び出しは削除されます。
  3. 破棄されたターンについて記録されたファイル変更は削除されます。 以前の巻き戻しポイントは引き続き使用できます。
  4. Copilot は、復元されたファイルの数を報告し、スキップされたファイルを識別します。
  5. 選択したプロンプトが入力領域に配置されるので、編集して再送信できます。

会話のみを巻き戻す場合、ファイルはそのまま残ります。 以降のセッション履歴が削除され、選択したプロンプトが入力領域に復元されます。

復元できない変更

次の状況では、ファイルの復元はスキップされるか、利用できません。

  • 10 MB を超えるファイル: 10 MB を超える個々のファイルへの変更はキャプチャされません。
  • 500 件を超える変更ファイル: 1 回のターンで 500 を超えるファイルが変更された場合、そのターンのファイルの変更はキャプチャされません。 その他のターンは影響を受けません。
  • 自分で変更したファイル: ファイルの現在の内容が Copilot が最後に書き込んだ内容と一致しなくなった場合、ファイルはそのまま残ります。
  • ファイル変更の追跡がないセッション: ファイル変更の追跡が有効になる前にセッションが開始された場合、会話の巻き戻しのみが使用できます。
  • リモート保存基盤のあるセッションまたはビジー状態のセッション: リモート保存基盤のあるセッションや作業の進行中は、巻き戻しを使用できません。

ロールバックの検証

ロールバック後、Git コマンドを使用してリポジトリの状態を確認し、それが期待値と一致することを確認できます。

!入力すると、Copilot CLI入力プロンプトからシェル コマンドを直接実行できるため、リポジトリの状態を確認するために CLI を終了する必要はありません。

目的このコマンドを入力します
変更済み、ステージング済み、または追跡解除済みとして表示されるファイルを確認します。! git status
現在のコミットの SHA メッセージとコミット メッセージを表示します。! git log --oneline -1
ステージされていない変更をレビューします。! git diff

詳細については、次を参照してください。