スキップしてメイン コンテンツに移動

【Day 07】変更の記録とステージング(add / commit)の作法

Day 07 アイキャッチ
▲ Day 07: 変更の記録とステージング(add / commit)の作法
👨‍🏫 専任講師からのメッセージ

受講生の皆様、お疲れ様です! 第7回講義へようこそ。
VSSやSVNなどの集中型バージョン管理システムに長年慣れ親しんだベテランエンジニアの方から、最も頻繁に寄せられる疑問がこれです:
「SVNならファイルを保存してコミットボタンを押すだけだったのに、なぜGitはわざわざ『git add(ステージング)』と『git commit(コミット)』の2段階に分かれているのか?」
実はこの「ステージング」こそが、複数機能の混在を防ぎ、後から安全に取り消せる高品質なコードベースを保つ最大の武器なのです。本日は「1機能1コミットの鉄則」と「AIエージェントを活用した美しいコミットメッセージ自動生成」を完全マスターしましょう!

① なぜ2段階必要なのか? ステージング(add)の真意

集中型バージョン管理(SVN / VSS)では、作業ディレクトリの変更がそのまま中央サーバーに一括コミットされていました。そのため、「ユーザー一覧機能を作っていたはずが、途中で見つけたバグの修正やログの追加もついでに全部まとめてコミットしてしまった」という事態が頻発していました。

Gitでは、変更されたファイル群の中から「今回のコミットに含めたい変更だけを選択してカゴに入れる」作業エリアが用意されています。これが「ステージングエリア(インデックス)」です。

ステージングの概念と1機能1コミット
▲ 【図解①】ステージング(git add)で1機能1コミットを実現する

上の図のように、作業ディレクトリ(ワーキングツリー)で5個のファイルを変更していても、ステージングエリアに3個だけを乗せてコミット(git addgit commit)し、残りの2個は次の別コミットとして記録することができます。

② 1機能1コミット(アトミックコミット)の原則とC#現場の実践

Git運用の世界で最も重要とされる作法が「Atomic Commit(1機能1コミット / 分割コミット)」です。1つのコミットには「1つの目的・1つの関心事」だけを詰め込みます。

💡 なぜ1機能1コミットにすべきなのか?(3大メリット)

  • バグ調査が爆速になる: git bisect などの自動調査コマンドで、不具合の原因となったコミットを秒速で特定できる。
  • ロールバックが容易: もし特定の新機能に問題が見つかっても、そのコミットだけを git revert で安全に取り消せる。
  • コードレビューの負担激減: 「新機能の追加」と「既存コードのリファクタリング」が別コミットになっていれば、差分が明瞭でレビューが圧倒的に楽になる。

③ TortoiseGitコミット画面と標準プレフィックス規約

Windows環境でC#開発を行う場合、TortoiseGitのコミットダイアログを活用すると、チェックボックスでコミット対象ファイルを選択できるため、直感的に1機能1コミットを実現できます。

TortoiseGitコミット画面とプレフィックス規約
▲ 【図解②】TortoiseGitコミット画面とプレフィックス規約

コミットメッセージには、世界標準の「Conventional Commits」プレフィックス規約を採用するのが現代のデファクトスタンダードです:

プレフィックス 意味・用途 C#開発での具体例
feat: 新機能の追加 feat: ユーザー認証用JWTトークン発行処理を追加
fix: 不具合・バグの修正 fix: DB接続タイムアウト時のNullReferenceExceptionを修正
refactor: 振る舞いを変えないコード整理 refactor: OrderServiceの重複ロジックを共通メソッドへ抽出
chore: ビルド設定や雑多なメンテ chore: NuGetパッケージ(Newtonsoft.Json)をv13.0.3へ更新
docs: ドキュメントのみの更新 docs: READMEにローカル開発環境のセットアップ手順を追記
test: 単体テスト等の追加・修正 test: PaymentCalculatorの境界値テストケースを追加

④ 4大AIエージェントによるコミットメッセージ自動生成

「コミットメッセージを毎回考えるのが面倒……」という悩みは、現代のAIエージェントを使えば一瞬で解決します。差分(git diff)を渡すだけで、最適なプレフィックス付きメッセージを自動生成できます。

4大AIエージェントによるコミットメッセージ自動生成
▲ 【図解③】4大AIエージェントによるコミットメッセージ自動生成

【AIエージェント用 黄金プロンプト】

「以下の git diff の差分内容を解析し、Conventional Commits 規約(feat, fix, refactor, chore, docs, test)に従った日本語のコミットメッセージ(1行の要約+必要に応じた箇条書き詳細)を生成してください。
# git diff 出力:
[ここに差分を貼り付け]」

⑤ 実践! 現場で即役立つコマンドライン操作

# 1. 変更状態の確認(未ステージ・ステージ済みの色分け確認)
git status

# 2. 特定のファイルだけをステージング(カゴに入れる)
git add Services/UserService.cs Controllers/UserController.cs

# 3. プレフィックス付きでコミットを実行
git commit -m "feat: ユーザー一覧取得APIにページネーション機能を追加"

# 4. 残りのリファクタリング差分をステージングしてコミット
git add Helpers/QueryHelper.cs
git commit -m "refactor: クエリビルダの共通化とパフォーマンス改善"

# 5. 【便利ワザ】直前のコミットメッセージを打ち直したい時(ローカルのみ)
git commit --amend -m "feat: ユーザー一覧取得APIにページネーションとソート機能を追加"
⚠️ 30年選手が一番ハマる落とし穴!

① 思考停止の git add .git commit -m "修正" は厳禁!
SVNやVSSで「一日の終わりに全ファイルをまとめてコミット」していた感覚で git add . を乱用すると、コミット履歴が巨大なブラックボックス化します。不具合発生時に犯人特定ができなくなり、チーム開発で大混乱を招きます。

git commit -a -m "..." の罠
-a オプションは変更ファイルを自動ステージングしてくれますが、新規ファイル(Untracked)は拾ってくれません。また意図しないデバッグログまでコミットに含まれやすいため、慣れるまでは明示的に git add するかTortoiseGitの画面で確認しながらコミットしましょう!

📌 本日のまとめ&宿題

第7回の講義、お疲れ様でした!
「ステージングは不要な変更を弾くフィルター」「1機能1コミットで安全な変更履歴を作る」「プレフィックス規約とAI自動生成で美しいコミットログを残す」というGit運用の黄金原則を習得しました!

次回【Day 08】は、「変更履歴の可視化と差分比較(log / diff / blame)〜犯人探しではないスマートなコードレビュー〜」をお届けします。どうぞお楽しみに!

コメント

このブログの人気の投稿

Perfume、2025年末で“コールドスリープ(活動休止)”へ──東京ドーム2daysの記録と、公式・各界・ファンの声

  1) 公式発表・基本情報 活動休止(コールドスリープ)を正式発表 2025年9月21日、公式サイト「 Perfumeより 」で、2026年から一度コールドスリープに入ると発表。再始動の意思(“新しいPerfume”として戻る)も明記。 Perfume Official Site 今後の運用告知(配信・上映など) 同21日付の「 今後のPerfumeに関して 」で、9/23(火・祝)東京ドーム公演の LIVESHIP全世界生配信 および 全国ディレイビューイング 決定を案内。特設サイトも併記。 Perfume Official Site +1 公式グッズ **「Perfume Calendar 2026」**発売決定(B2壁掛け/表紙+2カ月1枚×6枚+ポスター)。テーマは“フルーツ”。 Perfume Official Site 2) 東京ドーム2days(9/22・23)要点 公演タイトル: ZO/Z5 Anniversary “ネビュラロマンス” Episode TOKYO DOME 。日程・開場/開演・会場・物販等の実務情報は特設で公開。 Perfume Official Site 9/23公演を世界配信(LIVESHIP) /ディレイビューイング実施。 Perfume Official Site 海外向け報道(英語)も「 indefinite hiatus 」として広く配信。 The Times of India 国内英字メディアも速報。 朝日新聞 3) 現地レポ( メリ爺 )から見える空気 あなたの現地記録(9/24公開)を、ファクトと現場情景の両面で反映: 両日参戦 。22日は アリーナ 、23日は 1階席から俯瞰 。前日の発表を受け、開演前のザワつき→MC後に“いつもの一体感”へ。開演は22日 18:45 頃。オープニングは**P³ツアー東京ドーム(2020/2)**と同趣向で“回収”の演出。 メリ爺のゲーム万歳 MC所感 :解散ではなく前向きな休止で不安を和らげる内容。 かしゆか の涙、 のっち の気丈さ、 あ〜ちゃん の思い出語り──3人の結束と「 また戻る 」約束が強く刻まれた。 メリ爺のゲーム万歳 体感時間 : “3時間弱”級のボリューム ながら“過去一...

【Perfume】Perfume 3rd Tour 「JPN」さいたまスーパーアリーナに行って参りました~

Perfume 3rd Tour 「JPN」1月28日、29日の2daysで参戦して参りました。 ファンクラブ会員の選考抽選会に28日、29日の両日で申し込んでいたんですが、両方とも当選していたという嬉しい誤算。 仕事だぁ、なんだかんだと紆余曲折ありまして28日の参戦は危ぶまれていたのですが、なんとかかんとか28日は40分遅刻しながらも参戦、29日はフル参戦する事が出来ました(∩´∀`)∩

ニンテンドースイッチでオンラインゲームを遊ぶには?

モンスターハンターライズが発売になって、家族でモンハン楽しみたい人が増えたみたいですね。 某ブログの検索キーワードを調べると、モンハンを家族でやるにはどうしたらいいのか?を調べている人が沢山いるのがわかります。 ※これでも一部  家族で協力するにはSwitch2台、ソフトも2つ購入する必要があります。 1台のスイッチでは遊べませんし、ソフト1つでも遊べません。 でも、1台のスイッチで別々アカウントがあれば交代で遊ぶこともできますよ。セーブデータもしっかり分かれます。 Switchのオンラインゲームを家族で遊ぶ方法については以下の記事にまとめてますのでよろしければ参考にしてみてくださいね。 家族でモンスターハンターライズDL版のオンラインプレーを楽しむ方法