# GitHub Copilot CLI セッション中に行われた変更のロールバック

Copilot CLI セッションを前のプロンプトに巻き戻して、会話履歴の変更を元に戻し、必要に応じてファイルを復元します。

## イントロダクション

対話型 Copilot CLI セッションで作業する場合、 Copilot はファイルの変更、シェル コマンドの実行、リポジトリの変更を行うことができます。 結果が期待どおりでない場合は、セッションの前のポイントに巻き戻して、それらの変更を元に戻すことができます。

Copilotがアイドル状態のときに <kbd>Esc</kbd> キーを 2 回押すか、`/undo`スラッシュ コマンド (またはそのエイリアス `/rewind`) を使用して、巻き戻しをトリガーできます。

巻き戻すポイントを選択すると、 **会話のみを巻き戻** すか、 **会話を巻き戻してファイルを復元**するかを選択できます。

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

この記事では、変更をロールバックする方法について説明します。 セッションの以前のポイントへの巻き戻しの概念の詳細については、「 [GitHub Copilot CLI操作の取り消しと変更のロールバック](/ja/copilot/concepts/agents/copilot-cli/cancel-and-roll-back)」を参照してください。

## 前提条件

* **巻き戻しポイントが存在する必要があります。** セッションで最初のプロンプトの前にロールバックすることはできません。
* **ファイルの復元は、ファイルの変更を追跡したセッションでのみ使用できます。** ファイル変更の追跡が有効になる前に開始したセッションを再開すると、会話の巻き戻しのみが提供されます。 ファイルの変更を復元できるように、新しいセッションを開始します。
* **ファイルの復元では、自分で変更したファイルがスキップされます。** 現在の内容が最後に書き込んだ内容 Copilot 一致しなくなったファイル (たとえば、後で編集したため) と、バックアップするには大きすぎたファイルは、上書きされるのではなく、そのまま残されます。
* **巻き戻しは、リモートでバックアップされたセッションでは使用できません**。また、セッションがまだ進行中です。

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

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

<kbd>Esc</kbd> キーを 2 回押すと、Copilotがアイドル状態の場合にのみ巻き戻しピッカーが開きます。 操作が進行中の場合の Double <kbd>Esc</kbd> の動作の詳細については、「 [GitHub Copilot CLI操作の取り消しと変更のロールバック](/ja/copilot/concepts/agents/copilot-cli/cancel-and-roll-back#what-pressing-esc-does-in-different-situations)」を参照してください。

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

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

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

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

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

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

   > \[!NOTE]
   > 巻き戻し**は、直前**の状態に対して適用されますCopilotプロンプトの操作が完了した直後ではなく、プロンプトでの作業を開始します。

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

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

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

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

## ロールバックの検証

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

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

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

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

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