コンテンツにスキップ
LinkedInX

コミット前の変更がある状態で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 diff

git 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へ引き継ぐ
  • 途中の変更はスタッシュで一時退避できる
  • 失われた変更の復元は難しい場合があるため、手順の順守が重要