セッション分岐とリワインド:会話の履歴を自由に操作する
概要
Claude Codeのセッション分岐(Branching)とリワインド(Rewind)機能は、会話とコード変更の履歴を自由に操作できる強力な機能です。チェックポイントシステムが各変更前にコードの状態を自動保存し、任意の時点に巻き戻したり、そこから新しい会話ブランチを開始したりできます。VS Code拡張機能ではさらに視覚的な操作が可能です。
使い方
CLI版でのリワインド
Escキーでのリワインド
Escキーを2回素早くタップすると、直前のチェックポイントにリワインドされます。
Esc Esc → 直前の状態に巻き戻し/rewind コマンド
/rewindチェックポイント一覧が表示され、巻き戻したい時点を選択できます。
VS Code拡張機能での操作
VS Code拡張機能では、より視覚的で柔軟な操作が可能です。
リワインドボタン
会話内の任意のメッセージにホバーすると、リワインドボタンが表示されます。クリックすると3つのオプションが選択できます:
| オプション | 会話履歴 | コード変更 |
|---|---|---|
| Fork conversation from here | この時点から新しいブランチを開始 | すべての変更を維持 |
| Rewind code to here | 会話履歴全体を保持 | この時点まで巻き戻し |
| Fork conversation and rewind code | 新しいブランチを開始 | この時点まで巻き戻し |
チェックポイントの仕組み
Claude Codeは、ファイル編集を行う前に自動的にチェックポイントを作成します。
[チェックポイント1] → 編集A → [チェックポイント2] → 編集B → [チェックポイント3] → 編集C
↑
ここにリワインド可能
ここからフォーク可能活用シーン
- 異なるアプローチの試行: 実装方針に迷った場合、一つのアプローチを試した後にリワインドして別のアプローチを試す
- 実験的な変更の安全な実施: 大きな変更を試みる前の状態にいつでも戻せる安心感
- コードレビューでの修正: レビュー指摘に基づいて特定の時点まで戻り、修正を適用
- 学習と探索: Claudeに複数の解法を順番に示してもらい、それぞれの結果を比較
コード例
異なるアプローチの比較ワークフロー
ユーザー: 「認証をJWTで実装して」
Claude: [JWT方式で実装] ← チェックポイント作成
ユーザー: 「うーん、セッション方式も試したい」
ユーザー: /rewind (または Esc Esc)
→ JWT実装前の状態に戻る
ユーザー: 「認証をセッション方式で実装して」
Claude: [セッション方式で実装]
# VS Codeでは「Fork conversation from here」で
# 両方の実装を別ブランチとして保持することも可能VS Codeでの分岐活用
会話の流れ:
├── メッセージ1: 「APIを設計して」
├── メッセージ2: [Claude: REST API設計]
├── メッセージ3: 「エンドポイントを実装して」
├── メッセージ4: [Claude: 実装完了] ← ここでホバー
│ ├── [Fork] → 「テストを追加して」 # ブランチA
│ └── [Fork] → 「GraphQLに変更して」 # ブランチB
└── メッセージ5: 「テストを書いて」 # 元の会話注意点・Tips
- 自動チェックポイント: チェックポイントは自動的に作成されるため、手動で保存する必要はありません。ファイル編集が行われるたびに新しいチェックポイントが生成されます。
- Git状態の保全: リワインドはClaude Codeが行ったファイル変更のみを巻き戻します。手動で行った変更やgitコマンドの操作には影響しません。
- VS Codeとの連携: VS Code拡張機能の方がCLIよりも視覚的でリッチなリワインド操作が可能です。頻繁にリワインドを使う場合はVS Code拡張機能の利用をお勧めします。
- 既知の制限: M1 MacのVS Code統合ターミナルでは、Esc二回タップによるリワインドが正しく動作しない場合があります。その場合は
/rewindコマンドを使用してください。 - フォークと元の会話: VS Codeで「Fork conversation from here」を選択した場合、元の会話は影響を受けません。分岐した新しい会話で別のアプローチを安全に試せます。