
Cline、Cursor Composer、Windsurf Cascadeでコードをぶっ壊された時のリバート方法
AIエージェントの自動コーディングは便利ですがコードの破壊も頻繁に発生します。壊れたらすぐに戻せるようにやり方を覚えておきましょう。
Clineの場合
リバートの方法:
チェックポイントの確認: ClineではAIがコードを編集するたびに自動的に「チェックポイント」(作業中プロジェクトのスナップショット)が保存されます (Checkpoints | Cline)。コード変更を元に戻したい場合、まずClineのツールパネルで該当する変更ステップ(チェックポイント)を見つけます。各ステップの横に「Restore」(復元)ボタンが表示されるので、それをクリックします (Checkpoints | Cline)。
復元モードの選択: 「Restore」をクリックすると復元オプションのメニューが表示されます。ここで目的に応じたモードを選択します(詳細は後述の「設定やオプション」を参照) (Checkpoints | Cline)。通常、コードだけを元に戻す場合は「Restore Workspace Only」を選びます。
コードの巻き戻し: モードを選択すると、プロジェクト内のコードがそのチェックポイント時点の状態に復元されます。例えば、スタイル調整中にAIが望ましくない変更を加えた場合、「Restore Workspace Only」を使えばコード変更のみを直前の状態に戻し、会話コンテキストは維持できます (Checkpoints | Cline)。
設定やオプション:
3つの復元モード: Clineの復元機能では次の3つのモードが選択可能です (Checkpoints | Cline):
Restore Task and Workspace: コードベースとタスク(対話履歴)の両方をチェックポイント時点まで巻き戻します。現在のコード変更とAIとの会話履歴の両方を元に戻したいときに使用します。
Restore Task Only: コードはそのまま残し、タスクのコンテキストのみを指定のチェックポイントに戻します。コード変更は保持したまま、AIとの対話履歴だけを巻き戻したい場合に有用です。
Restore Workspace Only: コードベースのみをチェックポイント時点の状態に戻し、対話コンテキスト(タスク履歴)は維持します (Checkpoints | Cline)。コードの変更だけ取り消して会話は続行したい場合に使います。
チェックポイント機能: チェックポイントは内部的にGitのような履歴管理で実現されており、Clineは変更履歴を追跡するために「シャドーGit」リポジトリを使用します (Checkpoints | Cline)。これによりメインのGitリポジトリには影響を与えずに変更の比較や復元が可能です。特別な設定は不要で、自動で各ステップが保存されます。
差分確認: 復元を行う前に、各ステップの「Compare」ボタンで変更差分を確認できます (Checkpoints | Cline)。不要な変更はこの差分ビューで把握し、必要に応じて次のAI提案時に修正指示を与えることで、余計なリバート操作を減らすこともできます。
注意点:
モード選択に注意: 適切な復元モードを選ぶことで、必要な部分だけを巻き戻せます。"Restore Workspace Only"を選べばコードのみが元に戻り会話はそのまま続行できますが、"Restore Task and Workspace"を選ぶとその時点以降の対話履歴も失われるため注意が必要です (Checkpoints | Cline)。状況に応じて最適なモードを選択してください。
Undo操作の不在: Clineには他のツール(例: Cursor)のような一括で直前の変更を取り消す「簡単なUndoボタン」は存在しません (Where can I find the revert functionality in Cline? : r/ClineProjects)。そのため、チェックポイント機能やGitによるバージョン管理を活用して変更履歴を管理することが重要です。特に大きな変更を行う際は事前にGitにコミットしておくと安心です (Where can I find the revert functionality in Cline? : r/ClineProjects)。万一チェックポイント外の変更が生じても、Git履歴から手動で復元できます。
Cursor Composerの場合
リバートの方法:
チェックポイントの利用: Cursorの「Composer」モードでは、AIとの対話の各ステップ(イテレーション)ごとにコードベースのスナップショットが自動保存されます (Cursor – Composer)。現在の変更を元に戻したい場合、Composerウィンドウのチャット履歴(左側のペイン)を過去のメッセージへスクロールします。
特定の履歴を選択: 目的のステップまで履歴をさかのぼり、そのメッセージ付近に表示される「Restore」または「checkout」と書かれたボタン(チェックアウトボタン)をクリックします (Cursor – Composer) (Revolutionize Your Data Workflow: Keboola CLI Meets Cursor AI)。これにより、そのチェックポイント時点でのコード状態を現在のワークスペースに復元できます。
※UI上では各メッセージに対し「Revert all files to before this message」(このメッセージ以前の状態に全ファイルを戻す)といったオプションが表示される場合があります (Using LLMs and Cursor to finish side projects | Hacker News)。この操作を行うと、そのメッセージ以降でAIが行った全てのファイルの変更が一括で取り消されます。
コードの復元: 復元操作を実行すると、選択したチェックポイント以降に行われたコード改変がすべて取り消され、プロジェクト内のファイル群は当時の内容に戻ります。必要に応じて、その状態から再度AIに指示を出して開発を続けることができます。
設定やオプション:
自動スナップショット: Composerでのチェックポイント機能はユーザーが特別な設定をしなくても常に動作しており、各対話ステップが履歴として蓄積されます (Cursor – Composer)。いつでも以前のバージョンに戻れるようになっているため、安心して試行錯誤できます。
変更の確認と適用: AIがコード変更を提案した際、すぐにプロジェクトに適用せず差分ビューで内容を確認できます (Cursor – Composer)。その上で「Accept」(受け入れ)ボタンで変更を適用するか、「Reject」(却下)ボタンで提案を棄却するか選択可能です (Cursor – Composer)。不要または不適切と判断した変更は最初からRejectすることで、ファイルに反映しないままスキップでき、後からリバートする手間を省けます。
部分的なリバート: Cursor Composerではチェックポイント単位でプロジェクト全体をその時点に戻す仕組みのため、特定のファイルだけ元に戻すといった細かな指定はできません。必要に応じて、影響を受けるファイルを絞ってAIに再度編集指示を出すか、手動で修正してください。
注意点:
後続変更の消失: 選択したチェックポイントより後に行われた変更内容は、リバート時にすべて失われます。もし後の変更に一部でも保存したい修正が含まれている場合は、リバート前にその部分をコピーするなどバックアップしておく必要があります。リバート実行後は巻き戻した時点から再度変更を加え直すことになります。
履歴位置の特定: 長い対話セッションの途中で以前の状態に戻したい場合、どのメッセージ(どのステップ)に戻すべきか探すのに時間がかかることがあります (Windsurf vs Cursor: which is the better AI code editor?)。定期的に重要な区切りでComposerの履歴にチェックポイントが作られているか確認し、区切りの良いところでコミットメッセージを残すなどしておくと、後から目当てのポイントを見つけやすくなります。
バージョン管理の併用: Composerには独自の履歴管理がありますが、「AIが提案した変更を受け入れた結果、数手先で問題が発生し結局戻したい」というケースも考えられます。この点、Cursorは変更のリバートが決して万能ではないとの指摘もあり (Using LLMs and Cursor to finish side projects | Hacker News)、安全策として重要な変更前にはGitなどでコミットを行いバックアップを取っておくことが推奨されます (Using LLMs and Cursor to finish side projects | Hacker News)。そうしておけば、万一Composerの履歴からうまく戻せない場合でも、Gitの履歴から以前の状態を復元できます。
Windsurf Cascadeの場合
リバートの方法:
エージェント履歴からの復元: Windsurf(Codeium)のAIアシスタント「Cascade」でも、AIが行ったコード編集の各ステップに対して元に戻す操作が可能です (Windsurf - Cascade)。Cascadeパネル内のチャット履歴で、巻き戻したい特定の指示(プロンプト)がある箇所までスクロールします。
リバート操作の実行: 対象のプロンプト行にマウスカーソルを重ねると、その右端に⤺のような**矢印アイコン(復元ボタン)**が現れます (Windsurf - Cascade)。このボタンをクリックすると、そのステップでAIが加えた変更以降のコード修正がすべて取り消されます。
コードの巻き戻し: リバート操作が完了すると、プロジェクト内のコードは選択したステップ当時の状態に戻ります (Windsurf - Cascade)。例えば、いくつかの変更を適用した後で結果が思わしくない場合、該当する過去のプロンプトでこの操作を行えば、その後に行われた複数の変更をまとめて元に戻せます(不要であれば一度に全変更を破棄することも可能です (Windsurf vs Cursor: which is the better AI code editor?))。
設定やオプション:
ステップ単位の復元: Cascadeでのリバートはチャットの各ステップ単位で行われます (Windsurf - Cascade)。途中のステップに戻ることも可能ですが、その場合は選択したステップより新しい変更は一括で破棄されます。部分的に特定の変更だけ残すような細かな指定はできません。
「全破棄」のイメージ: 必要であれば、一番最初のプロンプトまで遡ってリバートを行うことで「すべての変更を最初からやり直す」こともできます。現状、Cascadeには一度に全変更をリセットする専用ボタンが用意されているわけではありませんが、初期状態へのリバートをすることで実質的に同様の効果が得られます (Windsurf vs Cursor: which is the better AI code editor?)。
モード切替: Cascadeには「Writeモード」と「Chatモード」がありますが、リバート操作自体はどちらのモードでも履歴上で同様に行えます。WriteモードではAIがコードを直接編集するため誤った変更も即座に現れますが、そうした変更も上記の手順で戻すことができます。
注意点:
リバートは不可逆: Cascadeのリバート操作は現在のところUndoできません (Windsurf - Cascade)。一度元に戻すと、その操作自体を取り消すこと(リバートのリバート)はできないため、実行する際は慎重に判断してください(**「やり直しは効かない」**という点に注意が必要です)。
新規ファイルへの対応: リバートを行うと該当ステップ以降の追加・変更内容は全て消去されます。これにはAIが新規に作成したファイルも含まれ、リバート時にそれら新規ファイルがプロジェクトから削除される挙動になります。しかし、ユーザーからは「新しく作成されたファイルがある場合、Cascadeのリバートが期待通り機能しないケースもある」との報告があります。大きな変更(特にファイルの新規作成や削除を伴う変更)を巻き戻す際は、結果を確認し、必要なら手動でファイルの整理を行ってください。
外部バージョン管理の活用: Windsurf Cascadeはリアルタイムで変更を適用できる利便性がありますが、その分思わぬ削除や改変が起きる可能性もあります。Cascade自体にも履歴が残りますが、念のため外部のバージョン管理(Git等)で保険をかけておくことが推奨されます。実際、Cascadeユーザーからも「コード変更前に毎回Gitにコミットしておき、AIがおかしな変更をしたらGitで元に戻すようにしている」という声があります (Windsurf keeps on deleting code : r/Codeium)。重要なコードがAIによって削除されてしまった場合でも、Gitに履歴があれば確実に復元できるので安心です。