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

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

## Introduction

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

* <kbd>Ctrl+</kbd><kbd>C</kbd> は、2 回目の押しを確認することなく、キューに入ったプロンプトをクリアし、現在の操作を取り消すことなく、直ちに動作します。
* 1 つの <kbd>Esc</kbd> キー押下により、段階的で段階的な制御が提供されます。
  Copilotがアクティブに動作している間、1 つの <kbd>Esc</kbd> はすぐにキャンセルされません。アラームが表示され、2 回目の押すと現在の操作が中断されます。 ローカル セッションでは、キューに登録されたプロンプトが次のターンとして処理されます。 リモート接続またはアタッチされたセッションでは、2 回目の押下で操作が完全にキャンセルされ、キューに入れられたプロンプトは次のターンに引き継がれません。

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

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

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

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

<kbd>Esc</kbd> キーを 2 回押すと、Copilotがアイドル状態で入力領域が空の場合、セッションの以前のポイントにロールバックできます。 その他の状況では、double <kbd>Esc</kbd> は次のいずれかの優先順位で実行します。

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

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

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

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

操作を中断する前に確認キーを押す場合は <kbd>、Esc</kbd> キーを使用します。 アクセス許可ダイアログが表示され、その特定の要求を拒否する場合は、 <kbd>Esc</kbd> キーを押すと要求が拒否され、現在の操作が停止されます。 ローカル セッションでフォローアップ プロンプトをキューに入れた場合、 <kbd>Esc</kbd> キーを 2 回押すと現在の操作が中断され、キューに登録されたプロンプトが次のターンとして処理されます。 リモート バックアップまたはアタッチされたセッションでは、 <kbd>Esc</kbd> キーを 2 回押すと操作が完全に取り消され、キューに登録されたプロンプトはフォローアップ ターンとして実行されません。

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

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

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

## 変更のロールバック

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

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

* **会話のみを巻き戻し**、ファイルはそのまま残します。
* **会話を巻き戻してファイルを復元する**と、Copilot で変更されたファイルを元に戻しつつ、後から自分で加えた編集はそのまま残せます。

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

ダブル <kbd>Esc</kbd> キー押下を使用してセッション中に行われた変更をロールバックする方法の詳細については、 [GitHub Copilot CLI セッション中に行われた変更のロールバック](/ja/copilot/how-tos/copilot-cli/use-copilot-cli/roll-back-changes) を参照してください。

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

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

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

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

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

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

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

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

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

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

* [GITHUB COPILOT CLI コマンド リファレンス](/ja/copilot/reference/copilot-cli-reference/cli-command-reference)