# gitって何だろう？

[< Previous: gitconfig 確認演習](../01-setup/08-exercise-verify-gitconfig.md) | [Back to Index](../../../README.md) | [Next: Linuxコマンド入門 >](02-linux-commands.md)

## What & Why

gitが「何をしているか」を理解しよう。コマンドの打ち方は知っていても、その裏で何が起きているかをイメージできると、これからのすべてがずっとわかりやすくなる。

## Content

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

RPGをやっているとき、ボス戦の前にセーブするよね。もし負けても、セーブしたところからやり直せる。

プログラミングも同じ。コードを書いていると、「あ、さっきの方が良かった」「消しちゃったやつを戻したい」って思う瞬間が必ずくる。そのときのために、**節目ごとに「セーブ」しておくツール**がほしい。

それが **git** だ。

---

### ファイルのタイムマシン

gitを使うと、こんなことができるようになる。

- 「3日前のコード」に戻す
- 「どこを変えたか」を確認する
- 「別バージョン」を並行して作る
- 「チームのみんなと同じコードを共有する」

git は**プロジェクト全体の変更履歴を記録し続けるシステム**だ。1つのファイルだけでなく、フォルダ内のすべてのファイルをまとめて管理できる。

---

### なぜ「名前を変えてコピー」じゃダメなのか

こんな経験はないだろうか？

```
report.txt
report_final.txt
report_final2.txt
report_final2_修正.txt
report_final2_修正_本当に最終.txt
```

これはよくある「なんちゃってバージョン管理」だけど、問題がある。

- どれが最新か分からなくなる
- 「どこを変えたか」が追えない
- ファイルが増えすぎてフォルダが散らかる
- チームで作業すると即カオスになる

git を使えば、こういった問題をすべて解決できる。ファイルは1つのまま、変更履歴だけが記録されていく。

---

### git の基本的な考え方

git では、「セーブ」のことを**コミット（commit）**と呼ぶ。

コミットするたびに、「このとき、このファイルはこういう状態だった」というスナップショットが記録される。

```
[最初のコミット] → [2回目のコミット] → [3回目のコミット] → 今
```

この記録の積み重ねが「履歴」になる。いつでも過去の任意のコミットに戻ることができる。

---

### リポジトリって何？

git で管理されているプロジェクトのフォルダを**リポジトリ（repository）**と呼ぶ。略して「リポ」とも言う。

リポジトリの中には、`.git` という隠しフォルダが作られる。ここにすべての変更履歴が保存されている。このフォルダは自分で触らなくていい。git が勝手に管理してくれる。

---

### まとめると

| 用語 | 意味 |
|------|------|
| git | 変更履歴を管理するツール |
| コミット | ある時点の状態を記録すること（セーブ） |
| リポジトリ | git で管理されているプロジェクトのフォルダ |

## Summary

- git は「プロジェクトの変更履歴を記録するタイムマシン」だ。
- 「名前を変えてコピー」による管理には限界がある。git はそれを解決する。
- 「セーブ」のことを **コミット** と呼ぶ。
- git で管理されたフォルダを **リポジトリ** と呼ぶ。

## Exercises

### 演習 1: git のバージョンを確認する

すでに setup セクションでやった操作だけど、改めて確認しよう。

<div class="code-input">

```bash
git --version
```

</div>

<div class="code-output">

```
git version 2.xx.x
```

</div>

### 演習 2: git の設定を確認する

setup セクションで設定した内容を振り返ろう。

<div class="code-input">

```bash
git config --list
```

</div>

`user.name` と `user.email` が表示されるはずだ。

### 演習 3: git のヘルプを眺めてみる

<div class="code-input">

```bash
git help
```

</div>

たくさんのコマンドが表示されるが、今は全部わからなくて大丈夫。「こんなことができるんだな」と眺めるだけでいい。

次のページでは、実際にリポジトリを作る前に必要な **Linux コマンド** を学ぼう。

### Reset & Retry

この演習ではファイルを変更していないので、特にリセット操作は不要。もう一度確認したい場合は、同じコマンドをもう一度実行してみよう。

[< Previous: gitconfig 確認演習](../01-setup/08-exercise-verify-gitconfig.md) | [Back to Index](../../../README.md) | [Next: Linuxコマンド入門 >](02-linux-commands.md)
