採点されません。匿名です。 間違えることは学習の一部です。読むだけでもかまいません。

変更を記録する

テクノロジ系 / commit — コミット操作の基本

変更を記録する

— add と commit の2ステージ構造 —

このトピックが終わると

  • git init でリポジトリを作れる
  • git addgit commit違いが説明できる
  • git diff でコミット前に変更内容を確認できる
  • git restore でステージ・変更を取り消せる
  • 良いコミットメッセージが書ける
  • git log で履歴を確認できる

章 1 — リポジトリとは何か

リポジトリ = 履歴の入れ物

my-project/          ← ふつうのフォルダ
├── index.html
├── style.css
└── .git/            ← Git が作る隠しフォルダ(履歴がここに入る)

.git/ があるフォルダ = リポジトリ

このフォルダを削除すると履歴が全て消える。

リポジトリを作る

# 新しいフォルダを作ってリポジトリ化
mkdir my-project
cd my-project
git init
Initialized empty Git repository in .../my-project/.git/

これだけ。既存のフォルダでも git init するだけでよい。

章 2 — 2ステージ構造

なぜ2ステップ必要なのか

「今日の変更を全部記録したくない」
→ レビュー中の途中経過は含めたくない
→ 関係ない修正は別のコミットにしたい

Git は「記録する前に選別できる」設計になっている。

ステージング=記録前の仕分け

graph LR
  A["🗂 作業ディレクトリ\nlogin.php\nstyle.css\n(変更あり)"]
  B["📋 ステージ\nlogin.php\n(記録予定)"]
  C["📦 履歴\ncommit"]
  A -->|git add login.php| B
  B -->|git commit| C
  style A fill:#f0f4ff,stroke:#4a90d9,color:#1a2a4a
  style B fill:#fff8e1,stroke:#f5a623,color:#1a2a4a
  style C fill:#e8f5e9,stroke:#4caf50,color:#1a2a4a

add で「これを記録する」と宣言し、

commit で「記録する」。

基本コマンド

# 状態を確認(まず必ずここから)
git status

# ファイルをステージに追加
git add login.php          # 1ファイル指定
git add .                  # 全ファイル

# コミット(記録)
git commit -m "feat: ログイン機能を追加"

git status の読み方

$ git status

Changes not staged for commit:    ← 変更あり・未ステージ
  modified: login.php

Changes to be committed:          ← ステージ済み・コミット待ち
  modified: style.css

Untracked files:                  ← Git が知らない新規ファイル
  newfile.js

章 3 — コミット前に確認する

git diff:何を変えたか確認する

git diff
- return "Login failed"    ← 削除された内容(赤)
+ return "ログイン失敗"    ← 追加された内容(緑)

commit する前に必ず確認する習慣をつける。

git diff の使い分け

# 未ステージの変更を確認(作業ディレクトリ vs ステージ)
git diff

# ステージ済みの変更を確認(ステージ vs 最新コミット)
git diff --staged
作業ディレクトリ ──→ ステージ ──→ 履歴
      ↑                 ↑
  git diff          git diff --staged

git restore:変更・ステージを取り消す

ステージを取り消すgit add を元に戻す):

git restore --staged login.php

作業ディレクトリの変更を取り消す(ファイルを最後のコミットに戻す):

git restore login.php

⚠️ git restore login.php元に戻せない

作業ディレクトリの変更が消えるので注意。

restore の対象まとめ

作業ディレクトリ          ステージ           履歴
(変更したファイル)       (記録予定)

  login.php             login.php
  (変更あり)           (ステージ済み)

  git restore login.php       git restore --staged login.php
      ↑                                    ↑
  変更を取り消す              ステージから外す(変更は残る)

章 4 — 良いコミットメッセージ

コミットメッセージは「未来の自分への手紙」

❌ 何をしたか分からない

git commit -m "修正"
git commit -m "変更しました"

✅ 何を・なぜしたか分かる

git commit -m "feat: ログイン機能を追加"
git commit -m "fix: パスワードバリデーションのエラーを修正"
git commit -m "docs: README にセットアップ手順を追記"

よく使うプレフィックス

プレフィックス意味
feat:新機能の追加
fix:バグ修正
docs:ドキュメントの変更
style:コードの整形・見た目
refactor:動作を変えないコード改善

「何をしたか」より「なぜしたか」を書くと、後から読んで分かりやすい。

章 5 — 履歴を確認する

git log で履歴を見る

git log
commit a3f1b2c  ← コミットID(ハッシュ)
Author: Your Name <you@example.com>
Date:   Fri May 16 10:32:00 2026

    feat: ログイン機能を追加

commit 9d8e7f6
...

見やすい表示

# 1行で表示
git log --oneline
a3f1b2c feat: ログイン機能を追加
9d8e7f6 fix: タイポを修正
3c2a1b0 docs: README を追加

まとめ

git init      リポジトリを作る
git status    今の状態を確認(迷ったらここ)
git add       記録するファイルをステージに追加
git commit    ステージの内容を記録
git log       履歴を確認

→ 次のトピック remote で GitHub に送る