ライフスタイル

Git・ブランチ・差分・復元

Git は履歴、ブランチは変更のまとまり、diff は差分を扱います。会話の再開ではファイルは復元されません。

読了目安 15 分 · 操作 30 分

作業の流れを表す図です。製品画面の画像ではありません。
画像:Mokaair (© Mokaair)
総目次へ:Codex 学習ガイド:全記事の目次

実践 · Desktop / CLI / VS Code / JetBrains

この記事の目次
  1. 目標と準備
  2. 手順1:独立した基準を作る
  3. 手順2:ブランチで区別できる二変更
  4. 手順3:一ファイルをステージして復元を試す
  5. 手順4:限定 commit と履歴を残す撤回
  6. 命令比較、対処と受入

目標と準備

を確認します。作業ツリー、次の commit 用 index、記録版は別状態です。ブランチは履歴の線で、未コミットのコピーではありません。別場所はを使い、ブランチを保存完了としません。

手順1:独立した基準を作る

他プロジェクト外の codex-git-lab に expected 5ファイルを置き、Windows PowerShell は Get-Location、macOS/Linux は pwd で現在地を確認し、git --version を実行します。なければ公式 OS 別導入を行い端末を開き直します。既存仕事用リポジトリでこの初期化をしません。

ターミナル:独立した Git 基準 · sh
git init -b main
git config user.name "Practice Learner"
git config user.email "learner@example.invalid"
git add index.html style.css app.js core.mjs core.test.mjs
git diff --cached --name-only
git commit -m "Add practice baseline"
git status --short

逐行実行し、最初の5ファイルと commit 後の無変更を確認します。名前と予約ドメインは教材内設定で、GitHub 認証や global ではありません。署名・hooks の既存要件があれば従うか障害を記録し、全体方針を変更しません。

手順2:ブランチで区別できる二変更

ターミナル:ブランチ作成 · sh
git switch -c codex/title-lab
git branch --show-current

codex/title-lab を確認後、index.html の h1 にある Make room for one small task. だけを Plan one useful step. にし、CSS 末尾へ次のコメントを加えて別の未確定作業を模します。成果はタイトルで、CSS は保持しつつタイトル commit に混ぜません。両方とも教材です。

ファイルへ追記:style.css · css
/* KEEP-MY-NOTE */
ターミナル:差分確認 · sh
git status --short
git diff -- index.html style.css

差分の旧行・新行と周辺を見て、h1 と CSS コメントだけか確認します。ファイル数だけで判断しません。次の読取り依頼で既存作業と対象を特定し、全差分 commit は求めません。

Codex への依頼:範囲の読み取り専用確認 · text
Inspect this lab's current branch, status and diff without editing, staging or committing. The intended change is only the h1 title in index.html. The KEEP-MY-NOTE comment in style.css represents separate work and must be preserved. Explain what belongs in the title commit and what must stay outside it.

手順3:一ファイルをステージして復元を試す

ターミナル:対象ファイルだけをステージ · sh
git add index.html
git diff --cached --name-only
git diff --cached -- index.html
git diff -- style.css

同じファイルの2つの版を比較します。git add を再実行せず、エディターでステージ済みの Plan one useful step. だけを Compare one useful step. に変更します。次の4行で作業ツリー、インデックス、HEAD の違いを確認します。

ターミナル:同じファイルのステージ済み・未ステージ差分 · sh
git status --short
git diff --cached -- index.html
git diff -- index.html
git show :index.html

status は MM index.html と未ステージの style.css を示すはずです。これは競合ではありません。Git status 公式説明に従うと、この場合は1列目の M が HEAD に対するインデックスの変更、2列目がインデックスに対する作業ツリーの変更です。cached diff は Make → Plan、通常の diff は Plan → Compare、show :index.html はステージ済みの Plan を示します。この時点の通常のコミットに Compare は自動で入りません。

続いて元の順序で2種類の restore を実行します。1行目はステージ解除だけなので Compare はディスクに残ります。2行目は、基準の旧タイトルに戻ったインデックスから index.html を復元します。1行目を飛ばすと、worktree restore の復元元はステージ済みの Plan のままです。Git restore 公式説明にこの既定の復元元の違いがあります。破棄する対象が練習用タイトルであることを確認し、CSS は保持します。

ターミナル:ステージ解除後に復元 · sh
git restore --staged -- index.html
git restore --worktree -- index.html
git status --short
git diff -- style.css

CSS だけ変更、h1 復元、コメント保持を確認します。自分の取消しで別作業を消しません。--staged は実ファイル編集を捨てず、--worktree は指定ファイルを復元元で上書きするため別物です。

手順4:限定 commit と履歴を残す撤回

タイトルを再変更して index.html だけステージし差分確認します。commit はタイトルだけ、CSS は未確定のままです。show で実際の対象を確認し、成功終了だけで範囲正解としません。

ターミナル:タイトルの確認とコミット · sh
git add index.html
git diff --cached --name-only
git diff --cached -- index.html
git commit -m "Update practice title"
git show --format=short --name-only HEAD
git status --short

撤回前に作業ツリーを確認します。残る教材 CSS コメントの保持を検証後、今回は明示的にその練習を終えて最初の命令でそのファイルだけ戻します。無変更と HEAD のタイトル commit を確認してから revert します。実作業の別の変更には流用しません。

ターミナル:メモ練習を終え、コミットを取り消す · sh
git restore --worktree -- style.css
git status --short
git log -1 --oneline
git revert --no-edit HEAD
git log -3 --oneline
git status --short

revert は元変更を残して逆向き commit を追加します。旧 h1、3履歴、無変更が期待です。衝突は状態を読み、強制選択をしません。未完了 revert の取消しは git revert --abort の手順で行い再確認します。

命令比較、対処と受入

目的命令確認
未ステージを見るgit diff作業ツリーと index
次の commit を見るgit diff --cachedindex と HEAD
ステージ解除git restore --staged -- index.html編集は残る
指定未確定変更を捨てるgit restore --worktree -- index.html元とパスを先に確認
commit 撤回git revert --no-edit HEAD対象と無変更を確認、履歴追加

分岐不在は repository を確認し、不意なファイルを add . でまとめません。一ファイルに変更が混ざると全体ステージに全て入るため、各差分を理解して処理します。CSS 除外、二つの restore、revert 履歴が受入条件です。図1状態、2限定確定、3復元確認。次はです。

19. Git・ブランチ・差分・復元 — 作業の流れを表す図です。製品画面の画像ではありません。 Branch → Diff → Commit
19. Git・ブランチ・差分・復元 — 作業の流れを表す図です。製品画面の画像ではありません。 Branch → Diff → Commit · 画像:Mokaair (© Mokaair)
詳しい説明を読む

Branch to Diff to Commit

総目次へ

  • ライフスタイル

    Codex 学習ガイド:全記事の目次

    導入と最初のタスクから MD の指示、高度な連携まで、60 レッスン・十単元を予定しています。習熟度、環境、目的、コマンドで次の記事を探せます。未公開の記事には状態を表示します。

  • ライフスタイル

    実践:小さな Web サイトを作る

    brief.md から Small Steps のタスクサイトを計画・制作し、追加、完了、削除、絞り込み、ローカル保存を実装します。HTML、CSS、データ関数、画面イベント、テストを分け、Node とブラウザーで検証して再起動・復元の手順を残します。

  • ライフスタイル

    使用量と効率:やり直しを減らす

    条件、モデル設定、時間、成果を記録し、不要な再試行と過剰な文脈を減らします。

最新の旅の情報・ガイド

出典

ライフスタイル