コンテンツにスキップ

元に戻すとやり直しコマンド

概要

OpenCode の /undo/redo コマンドは、コードの変更と会話履歴を管理するための強力な機能を提供します。これらのコマンドを使用すると、変更を戻したり元に戻したりすることができ、開発ワークフローに柔軟性と制御性をもたらします。

コマンドリファレンス

/undo

会話の最後のメッセージまたはコードの変更を元に戻します。これには Git リポジトリが必要です。

ショートカットCtrl+X U

/redo

以前に元に戻したメッセージまたはコードの変更をやり直します。これには Git リポジトリが必要です。

ショートカットCtrl+X R

動作原理

OpenCode は、会話中に行われた変更を追跡するために Git のバージョン管理機能を使用します。/undo を使用すると、次のように動作します:

  1. 会話の現在の状態を記録します
  2. 前の状態に戻ります
  3. この変更を反映するように Git 履歴を更新します

同様に、/redo を使用すると、次のように動作します:

  1. 以前に元に戻された変更を Git 履歴で確認します
  2. 直近の元に戻された状態を復元します
  3. この復元を反映するように会話を更新します

操作デモンストレーション

基本的な元に戻す/やり直しのワークフロー

# 会話を開始
> 二分探索アルゴリズムの実装方法を説明してください

# コード実装を含む応答を受け取る
AI: Python での二分探索の実装例です...

# 別の言語を尋ねたいことに気づく
> /undo

# JavaScript の実装を要求する
> JavaScript で二分探索アルゴリズムの実装方法を説明してください

# JavaScript の実装を受け取る
AI: JavaScript での二分探索の実装例です...

# 結局は Python のバージョンの方が好きだと決める
> /undo
> /redo

# 現在は JavaScript の実装に戻っています

コード変更のワークフロー

# ファイルから開始
> @src/utils.js

# AI にコードのリファクタリングを依頼する
> このコードをアロー関数を使用するようにリファクタリングしてください

# AI がファイルを変更する
AI: アロー関数を使用するようにコードをリファクタリングしました...

# 変更を確認し、気に入らないと決める
> /undo

# 別のリファクタリング方法を要求する
> このコードをより説明的な変数名を使用するようにリファクタリングしてください

# AI が新しい変更を適用する
AI: 変数名をより説明的に更新しました...

一般的なシナリオ

1. ミスの修正

シナリオ:誤った質問をしたり、正しくない情報を提供したりした場合。

解決策

> Python の for ループの構文は何ですか?
AI: Python for ループを記述する方法です...
> /undo
> Java の for ループの構文は何ですか?

2. 異なるアプローチの探索

シナリオ:問題の複数の解決策を探索したい場合。

解決策

> JavaScript で配列をソートする方法は?
AI: Array.sort() を使用して配列をソートする方法です...
> /undo
> 組み込みメソッドを使用せずに JavaScript で配列をソートする方法は?
AI: バブルソートアルゴリズムの実装方法です...
> /undo
> /redo
# 最初の解決策に戻ります

3. コード変更の管理

シナリオ:元のコードを失わずに異なるコード変更を試したい場合。

解決策

> @src/app.js
> このコードをパフォーマンスのために最適化してください
AI: ... によってコードを最適化しました
> /undo
> このコードを可読性のためにリファクタリングしてください
AI: ... によってコードをより読みやすくリファクタリングしました
> /undo
> 両方の最適化を組み合わせてください

4. 不適切な提案からの回復

シナリオ:AI が機能しないかバグを導入するソリューションを提供した場合。

解決策

> 私のコードのこのバグを修正してください:@src/error.js
AI: ... によってバグを修正しました
> !node test.js
Error: ...
> /undo
> 別の方法でこのバグを修正してください

元に戻す機能の重要性

元に戻す機能は、いくつかの理由から重要です:

  1. セーフティネット:変更が予想どおりに機能しない場合に変更を元に戻す方法を提供します
  2. 実験:物事を壊す恐れなく異なるアプローチを試すことを奨励します
  3. 学習:異なるソリューションを並べて比較することができます
  4. 効率:変更が期待に沿わない場合に手動での作業を回避し、時間を節約します
  5. 自信:複雑なコード変更を探索する自信を与えます

ベストプラクティス

元に戻す/やり直しを使用するタイミング

  • 大きな変更を行う前:クリーンな状態から始めるために以前の変更を元に戻します
  • 予期しない結果を受け取った後:既知の良好な状態に戻すために元に戻します
  • 複数のオプションを探索するとき:異なるソリューションを比較するために元に戻す/やり直しを使用します
  • コードレビュー中:元のコードを表示するために変更を元に戻し、次に変更を表示するためにやり直します

効果的な使用のヒント

  • キーボードショートカットを使用する:時間を節約するために、元に戻すには Ctrl+X U、やり直しには Ctrl+X R を使用します
  • 他のコマンドと組み合わせる:長い会話を管理するために /undo/compact と組み合わせます
  • Git の要件に注意する:これらのコマンドを使用する前に、プロジェクトが Git リポジトリ内にあることを確認します
  • Git ステータスを確認する:どの変更が追跡されているかを理解するには、時々 !git status を確認すると役立ちます

トラブルシューティング

一般的な問題

  1. Git が初期化されていない:Git に関するエラーが表示された場合は、!git init を使用してリポジトリを初期化します
  2. 元に戻す変更がない/undo が機能しない場合、会話の始まりに到達している可能性があります
  3. やり直す変更がない/redo が機能しない場合、最新の状態に到達している可能性があります
  4. Git の競合:まれに Git の競合が発生する場合があります - 標準の Git ツールを使用して解決します

エラーメッセージ

  • “Git repository not found”:プロジェクトディレクトリで Git リポジトリを初期化します
  • “No changes to undo”:会話の始まりに到達しています
  • “No changes to redo”:最新の状態に到達しています

高度な使用法

Git コマンドとの組み合わせ

より強力なバージョン管理を得るために、OpenCode の元に戻す/やり直しコマンドを Git コマンドと組み合わせることができます:

# OpenCode を使用して変更を加える
> @src/main.js
> この関数にエラー処理を追加してください

# Git ステータスを確認する
> !git status

# 必要に応じて元に戻す
> /undo

# 満足したら変更をコミットする
> !git add src/main.js
> !git commit -m "Add error handling"

プランモードでの元に戻す/やり直し

プランモードを使用する場合、元に戻す/やり直しコマンドは同様に機能しますが、プランの状態にも影響します:

> /plan
> Task 1: ユーザー認証を実装する
> Task 2: データベース統合を追加する
> Task 3: API エンドポイントを作成する
> /plan finalize

# プランを変更するために元に戻す
> /undo
> Task 3: RESTful API エンドポイントを作成する
> /plan finalize

結論

/undo/redo コマンドは、OpenCode でコードの変更と会話履歴を管理するための基本的なツールです。実験のためのセーフティネットと異なるアプローチを比較する方法を提供することで、これらのコマンドはより自信を持って効率的に作業することを可能にします。最良の結果を得るために Git と組み合わせて使用することを忘れず、必要に応じていつでも戻ることができることを知っているので、さまざまなソリューションを試すことをためらわないでください。