Skip to main content

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

アクティブな Copilot 操作を取り消すさまざまな方法と、結果が期待どおりでない場合にセッション中に行われた変更をロールバックする方法について説明します。

Introduction

対話型のCopilot CLI セッションで作業する場合は、Esc キーまたは Ctrl キー+キーを押して、Copilotの動作を制御できます。 どちらのキー押下も操作を取り消すことができますが、動作が若干異なります。

+ は、2 回目の押しを確認することなく直ちに動作し、キューに入ったプロンプトを最初に削除してから (1 回の押しで)、現在の操作を取り消します。 * 1 つの Esc キー押下により、段階的で段階的な制御が提供されます。 Copilotがアクティブに動作している間は、1 つの Esc がすぐに取り消されることはありません。アラームが表示され、2 回目の押しでは、最後にキューに入ったプロンプトを削除するか、何もキューに入れなければ操作を取り消すという次の手順が実行されます。

Copilotが既に変更を行っており、元に戻す場合は、セッションの前のポイントにロールバックできます。 Copilot機能Copilot CLI、各プロンプトに応答するファイルの変更を追跡します。 これにより、Copilotがアイドル状態で入力領域が空のときに Esc キーを 2 回押して、以前のポイントに巻き戻すことができます。 巻き戻す場合は、会話のみを巻き戻すか、変更 Copilot ファイルも復元するかを選択します。

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

Esc キーを 1 回押すと、セッションの現在の状態に応じて異なるアクションが実行されます。

| 現在の状態 | Esc キーを押した場合の動作 | | ------------- | --------------------------------- | | Copilot はアクティブであり、キューに登録されたプロンプトはありません。 | 「キャンセルするにはもう一度Escキーを押します」というメッセージを表示します。 実行中の操作は、5 分の 1 以内にもう一度 Esc キーを押した場合にのみ取り消されます。 | | Copilot はアクティブであり、キューに登録されたプロンプトがあります。 | [Esc](もう一度 Esc キーを押して取り消す) アラームを表示します。 Esc キーをもう一度押すと、最近キューに入ったプロンプトが削除されます。 | | アクセス許可ダイアログが開いています。 | 1 つの Esc が保留中の要求を拒否します (2 回目の押しは必要ありません)。 | | ダイアログ、オーバーレイ、またはピッカーが開いています。 | ダイアログ、オーバーレイ、またはピッカーを閉じます。 | | Copilot がアイドル状態です。 | Esc キーをもう一度押すと巻き戻しピッカーが開くという簡単なリマインダーが表示されます。 変更のロールバックを参照してください。 |

Esc キーを 2 回押すと、Copilotがアイドル状態になると、セッションの以前のポイントにロールバックできます。 操作が進行中の場合、double Esc は次のいずれかの優先順位で実行します。

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

これらのいずれかが適用されない場合は、巻き戻しピッカーが表示されます。

Ctrl + C の代わりに Esc キーを使用する場合

操作を取り消すこの 2 つの方法の主な違いは、 Esc は段階的で対象を絞った介入用に設計されていますが、 Ctrl+C はハード ストップです。

現在の操作を必ずしも終了せずにを操作する場合はCopilotを使用します。 たとえば、アクセス許可ダイアログが表示され、その特定の要求を拒否する場合、 Esc キーを押すとダイアログが閉じられ、 Copilot は動作し続けます。拒否したツールは使用されません。 同様に、フォローアップ プロンプトをキューに入れて、既に進行中の作業を中断せずにキャンセルする場合は、 Esc キーを押すと、現在の操作が実行され続けている間に、最近キューに登録されたプロンプトが削除されます (前のプロンプトを削除するには繰り返します)。

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

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

経験則として、選択的に介入する場合は Esc 、停止してやり直す場合は Ctrl+C を使用します。

変更のロールバック

Copilotが非アクティブで、入力領域にテキストがない場合は、Esc キーを 2 回押して、ロールバックできる現在のセッションのポイントの一覧を表示できます。 各ポイントは送信したプロンプトに対応し、巻き戻しを行うと、セッションは、そのプロンプトの作業を開始する直前の状態 Copilot 戻ります。

巻き戻しポイントを選択した後、次の方法を決定します。

  • 会話のみを巻き戻し、ファイルはそのまま残します。
  • 会話を巻き戻してファイルを復元します。ファイル Copilot 変更され、後で編集した内容をそのまま残します。

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

ダブル Esc キー押下を使用してセッション中に行われた変更をロールバックする方法の詳細については、 GitHub Copilot CLI セッション中に行われた変更のロールバック を参照してください。

警告

巻き戻しを行うと、ワークスペース全体が選択したスナップショットにあった状態に復元されます。 これにより、その時点以降に行われたすべての変更 ( Copilotによる変更だけでなく、手動による編集やシェル コマンドによる変更もすべて元に戻します。 スナップショットの作成後にワークスペースで作成された新しいファイルは、Git の状態に関係なく削除されます。

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

ロールバック時に発生するアクションは、選択したオプションによって異なります。

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

  1. ファイルが復元されます。 変更 Copilot ファイルは、選択したプロンプトの前の状態に戻されます。 現在の内容が前回書き込んだ Copilot 内容と一致しなくなったファイル (たとえば、自分で編集したため) はスキップされるため、後で編集した内容は上書きされません。
  2. セッション履歴が切り捨てられます。 選択したポイントに会話が巻き戻されます。 その時点以降に発生したすべてのメッセージとツール呼び出しは、セッションから削除されます。
  3. 古いスナップショットは削除されます。 破棄されたターンのキャプチャされたファイルの変更がクリーンアップされます。 以前のポイントは、今後の巻き戻しで引き続き使用できます。
  4. ロールバックが確認されました。 ロールバック後、 Copilot は復元されたファイルの数を示すメッセージを表示し、スキップされたすべてのファイルをメモします。
  5. プロンプトが復元されます。 選択したポイントに関連付けられているプロンプトが入力領域に配置されるので、編集して再送信できます。

会話のみを巻き戻す場合、ファイルはそのまま残ります。セッション履歴は切り捨てられ (手順 2)、プロンプトは入力領域 (手順 5) に復元されます。

ロールバックできない変更

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

  • 10 MB を超えるファイル。 キャプチャ中に 10 MB を超える個々のファイルはスキップされるため、ロールバック中にそれらのファイルに対する変更は復元されません。
  • 500 を超える変更されたファイル。 1 回のターンで 500 を超えるファイルが変更された場合、そのターンのファイル変更はキャプチャされないため、そのターンのファイルを復元することはできません。 その他のターンは影響を受けません。
  • 自分で変更したファイル。 現在の内容が最後に書き込んだ内容 Copilot 一致しなくなったファイルは、上書きされるのではなく、そのまま残されます。
  • ファイル追跡なしのセッション。 ファイル変更の追跡が有効になる前に開始したセッションを再開すると、会話の巻き戻しのみが使用できます。 ファイルの変更を復元できるように、新しいセッションを開始します。
  • リモートでバックアップされたセッションまたはビジー状態のセッション。 巻き戻しは、リモートでバックアップされたセッションでは使用できません。また、セッションがまだ進行中です。

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