GGPT Master GuideAIを、日々の作業に。

CodexとGitでコミット済みの変更を取り消す

公開 2026-09-25 更新 2026-09-25

CodexとGitでコミット済みの変更を取り消す

関連テーマ:変更を調べ、試して確かめる

Codexと作業した変更をコミットしたあとで、元の内容へ戻したくなることがあります。git revertは、取り消したい変更を打ち消すコミットを追加する方法です。元のコミットも履歴に残ります。

この記事では、WindowsのPowerShellとGitを使い、練習用の1ファイルで「変更を保存→打ち消す→結果を確認」を進めます。実際のプロジェクト、公開先、他の人の作業には触れません。Gitをまだ使っていない場合はGitの基本から始めてください。

戻す対象を先に分ける

状態 最初の判断
編集したがコミットしていない 未コミット変更の確認と戻し方を使う
普通のコミット1件を打ち消したい 対象の差分を読み、revertを検討する
マージコミットを取り消したい 親の選択と再マージへの影響があるため、この練習をそのまま適用しない
公開や外部送信まで済んでいる 手元の取り消しとは別に、公開先の復旧を確認する

対象コミットに複数ファイルの編集が含まれていれば、その変更も打ち消す対象になります。「このファイルだけ戻したい」と「このコミットを取り消したい」は同じではありません。公式git-revertで操作の範囲を確認できます。

各段階で確認してから、次の操作へ進みます。

図解CodexとGitでコミット済みの変更を取り消す:進める順番
  1. 1対象を読む未コミット変更と対象コミットの差分を確認する。
  2. 2打ち消す元の履歴を残して取り消すコミットを追加する。
  3. 3結果を見る内容・履歴・状態を確認。競合で中断したいときはabortを使う。

具体的な依頼と、結果の確かめ方は本文にあります。

空の練習フォルダーを作る

PowerShellを開き、git --versionでGitが使えることを確認します。次の例は一時フォルダー内に固有名の練習場所を作ります。既存の作業フォルダーへ貼り付けて開始しないでください。

$practicePath = Join-Path ([System.IO.Path]::GetTempPath()) ('gmg-revert-' + [guid]::NewGuid().ToString('N'))
New-Item -ItemType Directory -Path $practicePath | Out-Null
Set-Location -LiteralPath $practicePath
git init -b main
git config --local user.name "Practice User"
git config --local user.email "practice@example.invalid"
'Title: first' | Set-Content -LiteralPath note.txt -Encoding ascii
git add -- note.txt
git commit -m "Save first title"

--localの名前とメールは練習用リポジトリだけの設定です。この例はリモートを登録せず、送信しません。途中でエラーが出たら、後続のコマンドへ進まず、その行とメッセージを確認します。

変更をコミットし、対象を読む

タイトルを1行だけ変更して保存します。

'Title: revised' | Set-Content -LiteralPath note.txt -Encoding ascii
git add -- note.txt
git commit -m "Revise practice title"
git status --short
git log --oneline -2
git show --stat HEAD
git show HEAD -- note.txt

git status --shortは何も表示しない状態を確認します。差分にはTitle: firstの削除とTitle: revisedの追加が見えるはずです。ここでのHEADは、いま作った最新のコミットを指します。別のコミットを追加すると指す対象も変わるため、実作業では履歴の読み方に沿ってIDと差分を確認します。

打ち消すコミットを追加する

今回の練習では、直前の変更1件を対象にします。

git revert --no-edit HEAD
Get-Content -LiteralPath note.txt
git log --oneline -3
git status --short

--no-editはコミットメッセージの編集画面を開かない指定です。確認画面を省略しても、対象の内容を読む工程は省きません。

成功の確認は次の3点です。

  1. ファイルがTitle: firstに戻っている。
  2. 履歴に最初の保存・タイトル変更・それを打ち消す新しいコミットの3件がある。
  3. git status --shortに未処理の変更が出ない。

この例はタイトル1行だけなので元の内容と一致します。実際には、後から加わった別の変更まで昔の状態へ巻き戻す操作ではありません。本文やコードを開き、残したかった変更も確認します。

競合やエラーで止まったら

表示や状況 次に確認すること
ローカルの変更が上書きされると表示 その編集を保存・退避してから再検討する。消して進めない
CONFLICTが出る 同じ部分の後続変更とぶつかった可能性がある。まずgit statusを読む
マージの親を指定するよう求められる 通常コミットではない。親番号を推測せず対象を見直す

進行中のrevertを取りやめる場合は、次の操作で開始前の状態へ戻せます。正常に完了したrevertを取り消すコマンドではありません。

git revert --abort
git status --short

競合を解決して続ける場合の考え方はGitの競合確認へ進みます。内容の判断がつかないまま競合マーカーを消したり、全体を強制的に戻したりしないでください。未コミットの作業を別に保管したいならstashの練習も使えます。

Codexへ依頼するときの例

以下のコミットID欄を、実際に確認したIDへ置き換えます。最初の依頼は点検だけに分けると、対象違いを見つけやすくなります。

このGitリポジトリで、コミットID「確認したID」の変更を取り消したいです。
まず変更せず、現在のブランチ、未コミット変更、対象の差分を確認してください。
通常のコミットかマージコミットか、残したい後続変更に影響しそうか説明してください。
実行する場合は元の履歴を残す方法を使い、対象以外の変更を保全してください。
競合が出たら状態と選択肢を報告してください。
公開先への反映やpushは、この依頼には含めません。

手元で直った後に公開も必要なら、対象と検査を揃えてブログの更新手順へ進みます。Gitの操作で、送信済みメールや外部サービスの記録が元へ戻るわけではありません。

確認日:2026年9月25日。git-revertとgit-showを参照。Git 2.53.0.windows.1の専用フォルダーで、本文相当のGit操作、3件の履歴、競合検出とabort後の復元を10項目確認しました。GitはNode.jsから起動して検証し、PowerShellの入力手順全体を通した実測ではありません。Codexモデルによる操作、共有リポジトリでの競合解決、公開先の復旧は未検証です。

このテーマを続けて読む

不具合修正、テスト、コード整理、ブランチで変更の結果を確認します。

変更を調べ、試して確かめるの記事をまとめて見る