# ブランチとは何か

<!-- prev/next navigation -->
[< Previous: 演習：小さなプロジェクトを作ってみよう](../02-basics/08-exercise.md) | [Back to Index](../../../README.md) | [Next: ブランチを作って切り替える >](02-branch-switch.md)

## What & Why

このページでは「ブランチ」という概念を学びます。ブランチを使うと、メインの作業を壊さずに新しいアイデアを試せるようになります。git の中でもっとも強力な機能のひとつなので、じっくり理解しておきましょう。

## Content

### セーブデータで考えてみよう

RPG をやっているとき、こんな経験はありませんか？

> ボス戦の直前。「もしかして詰んでるかも……？」と不安になって、別スロットにセーブしておく。負けたら別スロットからやり直せるし、勝ったらそのまま続ける。

git のブランチは、まさにこの「別スロットへのセーブ」に似ています。

---

### タイムラインを分岐させる、というイメージ

もうちょっと詳しく説明します。

git の歴史（コミットの積み重ね）は、1本の時間の流れとして想像できます。

```
A --- B --- C   ← main ブランチ（今ここ）
```

ここから「新しいブランチ」を作ると、**タイムラインが分岐**します。

```
A --- B --- C           ← main ブランチ
             \
              D --- E   ← new-feature ブランチ
```

新しいブランチで何をしても、`main` には影響しません。試して気に入ったら後で合流（マージ）できるし、失敗したらそのブランチごと捨てることもできます。

---

### なぜブランチが必要なの？

日記リポジトリ `my-diary` を例に考えてみましょう。

今の `main` ブランチには、毎日の日記ファイルが積み重なっています。ここで「新しいセクション：趣味ページを追加してみようかな」と思いついたとします。

でも、うまくいくかわからない。途中で「やっぱりやめよう」となるかもしれない。

そこでブランチの出番です。

- `main` ブランチ → 今まで通りの安定した日記
- `hobby-section` ブランチ → 趣味ページを試す実験場

こうすると、実験中も `main` はきれいなまま保てます。

---

### main ブランチって特別なの？

`main` は git が最初に自動で作るブランチです。「メインの流れ」「安定版」として使うのが一般的ですが、技術的には他のブランチと同じものです。

特別扱いするのはあくまで「人間のルール」。でもそのルールを守ることで、チームでも個人でも作業がずっとやりやすくなります。

---

### ブランチを使う場面

| 場面 | 使い方 |
|---|---|
| 新機能を試したい | 専用ブランチで実験、うまくいったら main に合流 |
| バグを直したい | 修正ブランチを作って直す、確認できたら合流 |
| 複数のアイデアを同時に試したい | それぞれ別ブランチで並行作業 |

---

### 次のページへ向けて

このページはあえてコマンドを使いませんでした。まずイメージをつかむのが大事だからです。

次のページでは、実際に `my-diary` リポジトリでブランチを作って、切り替えてみます。手を動かすと「あ、こういうことか！」とすぐわかるはずです。

## Summary

- ブランチは「タイムラインの分岐」。main を安全に保ちながら実験できる。
- セーブスロットのように、好きなタイミングで分岐・合流できる。
- `main` ブランチは最初から存在する「メインの流れ」。技術的には他と同じ。
- ブランチは新機能・バグ修正・アイデア試しなど、あらゆる場面で活躍する。

## Exercises

このページはコンセプトのみです。手を動かす練習は次のページ「[ブランチを作って切り替える](02-branch-switch.md)」で行います。

今のうちに、自分の言葉でブランチを誰かに説明してみましょう。「タイムラインの分岐」「セーブスロット」以外の例えを思いついたらメモしておくと面白いかもしれません。

### Reset & Retry

このページにはコマンドがないため、リセット操作は不要です。

<!-- prev/next navigation -->
[< Previous: 演習：小さなプロジェクトを作ってみよう](../02-basics/08-exercise.md) | [Back to Index](../../../README.md) | [Next: ブランチを作って切り替える >](02-branch-switch.md)
