Codexでコードを変更する前は、まず現在の状態を戻せる形に保存しておくと安心です。おすすめは、Gitで作業前のコミットを作り、必要に応じて専用ブランチやworktreeを使う方法です。この記事では、バックアップ方法の選び方、具体的な手順、変更を戻す方法、やってはいけない保存方法を説明します。
初心者の疑問: Codexに変更を頼む前に、ファイルをコピーするだけで十分ですか?
ファイルコピーでも一時的な保険にはなりますが、どの時点の変更か分かりにくく、戻す作業も手動になります。普段からGitで管理しているプロジェクトなら、作業前のコミットを「戻る場所」として残す方が確認しやすくなります。
まず選ぶべきバックアップ方法
作業の大きさと、プロジェクトがGit管理されているかで方法を選びます。
| 方法 | 向いている場面 | 戻しやすさ | 注意点 |
|---|---|---|---|
| Gitのコミット | 変更前の状態を確実に残したい | 高い | コミット内容を確認する |
| 作業用ブランチ | 本線を汚さず試したい | 高い | ブランチ名を確認する |
| Git stash | 未コミットの変更を一時退避したい | 中 | 退避内容を忘れない |
| Git worktree | 別フォルダーで安全に試したい | 高い | フォルダーを分けて管理する |
| フォルダーコピー | Gitを使っていない小規模作業 | 低〜中 | コピー漏れや容量に注意する |
比較ポイント: 「戻す場所」を明確に残したいならコミット、試す場所を分けたいならブランチまたはworktree、短時間だけ退避したいならstashが適しています。
変更前に確認するチェックリスト
Codexへ依頼する前に、次の項目を確認します。
チェックリスト: プロジェクトの場所、現在のブランチ、未コミットの変更、バックアップの保存先、変更後に実行するテストを確認する。
- プロジェクトのフォルダーを開く
- \
git status\で現在の変更を確認する - 自分の変更が残っている場合は、コミットまたはstashで区別する
- 作業前の状態をコミットするか、専用ブランチを作る
- Codexに変更範囲と確認方法を伝える
\git status\ は、現在のブランチ名や変更されたファイルを確認するコマンドです。変更が何もない場合は「working tree clean」と表示されます。表示がある場合は、既存の作業を消さないように内容を確認してから次へ進みます。
注意: \git add .\ はフォルダー内の変更をまとめて追加します。意図しないファイルまで含まれていないか、\git status\ の表示を確認してからコミットします。
方法1:作業前の状態をGitにコミットする
すでにGitで管理しているなら、変更前のコミットが最も分かりやすいバックアップになります。コミットは、ファイルの現在の状態に名前を付けて保存するイメージです。
PowerShellやターミナルでプロジェクトのフォルダーを開き、次の順に実行します。
\\\powershell git status git add . git commit -m "作業前の状態を保存" \\\
\git add .\ は変更を次のコミット候補に追加し、\git commit\ で保存します。コミット前に、\.env\、APIキー、パスワードなどの秘密情報が誤って追加されていないか確認してください。
コミットが完了したら、Codexへ「このコミットより後の変更として作業し、変更前の状態は壊さない」と伝えると、確認基準が明確になります。
方法2:作業用ブランチでCodexの変更を分ける
本線のブランチで直接試すのが不安な場合は、作業用ブランチを作ります。ブランチは、同じプロジェクトから変更の流れを分ける仕組みです。
\\\powershell git switch -c codex-backup-test \\\
このコマンドで \codex-backup-test\ というブランチへ移動します。ブランチ名は、作業内容が分かる名前に変えて構いません。
作業後に問題がなければ、差分を確認してコミットします。
\\\powershell git diff git status git add . git commit -m "Codexで変更を適用" \\\
本線へ戻る場合は次のように実行します。
\\\powershell git switch main \\\
プロジェクトによって本線の名前は \main\、\master\ など異なります。分からない場合は \git branch\ で確認してください。
ポイント: ブランチを作っただけではバックアップが完成したとは限りません。作業前の状態をコミットし、作業後の差分とテスト結果を確認するところまでが安全な流れです。
方法3:未コミットの変更をstashで退避する
すでに自分の作業途中で、すぐにコミットしたくない場合は \git stash\ が使えます。stashは、未コミットの変更を一時的に退避する仕組みです。
\\\powershell git stash push -m "Codex作業前の一時退避" git status \\\
退避した変更は、一覧で確認できます。
\\\powershell git stash list \\\
元に戻すときは、対象を確認してから \git stash pop\ を使います。
\\\powershell git stash pop \\\
stashは便利ですが、長期間の保管場所として使うものではありません。退避した理由や対象をメモし、作業後に \git stash list\ を確認しましょう。
失敗例: stashしたことを忘れたまま別の変更を続け、あとでどの作業を戻すべきか分からなくなる。 改善例: \git stash push -m "内容と日付が分かる名前"\ のように目的を付け、作業後に \git stash list\ を確認する。
方法4:別フォルダーのworktreeで試す
プロジェクトを別フォルダーに展開して試したい場合は、Git worktreeが役立ちます。worktreeを使うと、同じGitリポジトリから別の作業フォルダーを作れます。元のフォルダーを開いたまま、検証用の場所を分けられるのが利点です。
\\\powershell git worktree add ..\codex-backup-test -b codex-backup-test \\\
作成した \codex-backup-test\ フォルダーをCodexで開き、変更とテストを行います。不要になったworktreeは、作業フォルダーの場所を確認してから次のように削除します。
\\\powershell git worktree remove ..\codex-backup-test \\\
worktreeはバックアップそのものではありません。Gitの履歴と分離した作業場所を用意する機能なので、重要な変更はコミットやリモートへの保存も検討してください。
Gitを使っていない場合のフォルダーコピー
Gitをまだ使っていない小さなプロジェクトでは、作業前にフォルダーをコピーする方法もあります。
- エクスプローラーでプロジェクトのフォルダーを右クリックする
- 「コピー」を選び、別の場所へ貼り付ける
- コピー先の名前に日付と用途を付ける
- Codexではコピー先を開いて作業する
たとえば、\my-app_before-codex_2026-10-20\ のようにすると、いつの状態か後から判断できます。
補足: フォルダーコピーは、データベース、外部サービス、環境変数、生成物まで完全に再現するとは限りません。アプリが動くかを確認するには、依存関係や設定ファイルも別途確認が必要です。
Codexに伝えるべき依頼文
バックアップを作ったら、Codexへの依頼に範囲と確認条件を含めます。
\\\text 作業前に現在のGit差分を確認してください。 変更対象は src フォルダー内の〇〇だけに限定してください。 既存の未コミット変更は上書きしないでください。 変更後はテストを実行し、変更したファイルと結果を説明してください。 \\\
依頼文に「既存の未コミット変更を上書きしない」と書くと、作業前の状態を確認するきっかけになります。ただし、依頼文だけで安全性が保証されるわけではありません。実際の差分、テスト結果、動作を自分でも確認してください。
変更を戻すときの考え方
変更後に問題が見つかったら、まず差分を確認します。
\\\powershell git diff git log --oneline -5 \\\
作業前のコミットまで戻したい場合は、戻す対象を確認してから操作します。すでに別の変更がある状態で履歴を動かすコマンドを使うと、作業を失う可能性があります。
初心者は、いきなり \git reset --hard\ を実行せず、Codexや経験者に「この差分だけを作業前へ戻したい」と相談してください。共有リポジトリでは、履歴を書き換える操作が他の人の作業に影響することもあります。
初心者の疑問: バックアップがあれば、何をしてもすぐ戻せますか? いいえ。バックアップ後に作った別の変更、データベースの内容、外部サービスの設定までは自動で戻らないことがあります。戻せる範囲を確認してから変更を始めましょう。
まとめ:最初にやることは「状態の確認」
Codexで変更する前は、次の流れを習慣にすると安全です。
- \
git status\で現在の状態を確認する - 作業前の状態をコミットするか、作業用ブランチを作る
- Codexに変更範囲とテスト条件を伝える
- \
git diff\とテスト結果を確認する - 問題がなければ作業内容をコミットする
次にやること: 今使っているプロジェクトで \git status\ を実行し、表示された変更を確認してから、作業前のコミットを1つ作ってみてください。
コメント