Dev Study
← 解説「ブランチ→実装→確認→コミット — 開発の基本ループ」に戻る

サンプルコードで身につける: ブランチ→実装→確認→コミット — 開発の基本ループ

解説で学んだ概念を、5つの具体例で確認します。素朴な例から実務寄りの例へと進みます。

11機能ぶんのコマンド列を通しで見る

ブランチを切ってから main に合流するまでの一連の流れです。真ん中の「実装→確認→コミット」だけが何周も繰り返され、前後の手順は1機能につき1回だけです。

# ── 1機能の始まりから終わりまで ──

# 【最初に1回】main を最新にしてブランチを切る
git switch main
git pull
git switch -c feature/favorite-button

# 【何周も回す】実装 → ng serve で確認 → コミット
git add src/app/favorite-button/
git commit -m "feat: お気に入りボタンを配置"

# 【最後に1回】プッシュしてレビューを依頼し、main に合流
git push -u origin feature/favorite-button
# → GitHub などでプルリクエストを作成してレビューへ

2git switch -c — ブランチを作って移動する

git switch -c は「ブランチを作る」と「そこへ移動する」を同時に行います。ブランチ名は feature/機能名 のように、何の作業か分かる名前を付けるのがチームでの慣習です。

# ブランチを新規作成して、そのまま移動する(-c は create の意味)
git switch -c feature/favorite-button
# => Switched to a new branch 'feature/favorite-button'

# ブランチ名の付け方の例(チームの規約があればそれに従う):
#   feature/favorite-button  … 機能追加
#   fix/login-error          … バグ修正

# 既存のブランチへ移動するときは -c を付けない
git switch main

3書き始める前に現在地を確認する

作業前に git branch と git status で「どのブランチにいるか」「手元に未コミットの変更はないか」を見る習慣を付けます。main のまま書き始める事故はこの一手間で防げます。

# いま自分がどのブランチにいるかを確認(* が現在地)
git branch
#   main
# * feature/favorite-button

# 手元の変更状況を確認
git status
# On branch feature/favorite-button
# Changes not staged for commit:
#   modified:   src/app/favorite-button/favorite-button.ts

# コードを書く前にこの2つを見るのを習慣にする。
# 「main にいた!」に気づけるのはこの瞬間だけ

4なぜ main に直接コミットしないのか

main は全員が信頼して取り込む共有の土台なので、常に動く状態を保つ必要があります。ブランチに隔離すれば作りかけのコードが他人に影響せず、失敗してもブランチごと捨てられます。

# ── main とブランチの役割分担 ──
#
# main ブランチ
#   ・全員がここから作業を始める共有の土台
#   ・「いつでも動く」ことが信頼の前提
#   ・直接コミットすると、作りかけの壊れた状態が全員に配られる
#
# feature ブランチ
#   ・自分の作業を隔離する場所。壊れていても誰にも影響しない
#   ・レビューを通ってから main に合流する

# 方針が変わったらブランチごと捨てられる(main は無傷)
git switch main
git branch -D feature/favorite-button

5ループを何周も回した実例

1つの機能でも、コミットは1回ではなく小さく何回も積みます。各コミットの時点で動作確認が済んでいるので、どこまで戻っても動く状態が保証されているのが強みです。

# feature ブランチ上で「実装→確認→コミット」を4周した記録
git log --oneline main..feature/favorite-button
# a1b2c3d feat: お気に入りをlocalStorageに保存
# d4e5f6a feat: お気に入り一覧に件数バッジを表示
# 7g8h9i0 feat: クリックで☆/★を切り替える
# j1k2l3m feat: カードにお気に入りボタンを配置

# どのコミット時点でも ng serve で動作確認済み。
# 4周目で壊れても3周目まではいつでも戻れる