コミット前の変更がある状態でClaude CodeからCodexへ引き継ぐ手順
この記事について
Gitにコミット(セーブポイントの作成)していない変更がある状態で、Claude CodeからCodexへ作業を引き継いだとき、変更が意図せず失われるという問題が発生しました。この記事では、その経験と安全に引き継ぐための手順を記録します。
dirty worktreeとは何か
Gitは、ファイルの変更履歴を管理するツールです。ファイルを変更したとき、その変更を「コミット」という操作でセーブポイントとして記録します。
「dirty worktree」とは、コミットしていない変更がある状態です。ファイルを編集して上書き保存したが、まだセーブポイント(コミット)を作っていない状態と理解してください。
この状態でCodexに作業を引き継ぐと問題が起きる場合があります。
何が起きるか
Codexは、GitHubリポジトリを参照して作業します。コミット済みの変更はGitHubに反映されていますが、コミットしていない変更はGitHubには存在しません。
Codexが同じファイルに変更を加えて新しいコミットを作ると、コミット前の変更が失われる場合があります。Codexはコミット済みの状態を「正しい状態」として扱うため、その後に加えた変更があるとは把握していないからです。
実際にこの状況が起きました。Claude Codeでいくつかのファイルを変更し、「Codexに残りを引き継ぐ」と思ってコミットを忘れたまま引き継ぎ指示を出しました。Codexが同じファイルを別の内容に書き換えたため、Claude Codeで加えた変更が上書きされました。
安全に引き継ぐための手順
手順1:現在の変更を確認する
引き継ぐ前に、変更の状態を確認します。
git status
git diffgit status でどのファイルが変更されているかを確認します。git diff で変更内容を確認します。
手順2:agent-handoff文書を生成する
現在の状態を記録するため、handoff文書を更新します。
npm run agent:handoff生成されたファイルに「コミット前の変更があること」と「変更したファイルの一覧」を明記します。
手順3:コミットするかスタッシュするかを判断する
状況によって、対処が異なります。
変更が完了している場合:コミットしてからCodexに引き継ぎます。
git add <変更したファイル>
git commit -m "作業内容のメモ"変更が途中の場合:スタッシュ(一時保存)を使います。スタッシュとは、コミットせずに変更を一時的に退避させる操作です。
git stashスタッシュした変更は、後から git stash pop で戻すことができます。
手順4:Codexに渡す前に状態を整理する
コミットまたはスタッシュが完了したら、git status でクリーンな状態(コミット前の変更がゼロの状態)を確認します。その後、agent-handoff文書と一緒にCodexへ引き継ぎ指示を出します。
順番を間違えた場合の対処
Codexが変更を加えてしまった後に、以前の変更が失われていることに気づいた場合、Gitの reflog で変更前の状態を確認できる場合があります。
git reflogただし、スタッシュしていない変更はトラッキングされていないため、Codexが上書きすると復元できない場合があります。手順を守ることが最善の対策です。
まとめ
- dirty worktreeとは、コミットしていない変更がある状態
- コミット前の変更がある状態でCodexに引き継ぐと、変更が上書きされる場合がある
- 安全な手順:変更を確認する → handoff文書を更新する → コミットまたはスタッシュする → クリーンな状態を確認してからCodexへ引き継ぐ
- 途中の変更はスタッシュで一時退避できる
- 失われた変更の復元は難しい場合があるため、手順の順守が重要