1. なぜ Git を使うのか
この章だけは手を動かしません。 Git と GitHub の区別だけ持ち帰れば十分です。
1-1 「最終版_修正2_本当に最終.docx」問題
Section titled “1-1 「最終版_修正2_本当に最終.docx」問題”ファイル名で世代を管理したことのある人は、この4つに心当たりがあるはずです。
- どれが最新版なのか、自分でもわからなくなる
- 昨日は動いていたのに、どこを戻せばいいのかわからない
- 2人で同じファイルを編集して、片方の作業が消える
- この変更を誰が何のためにやったのか、誰も答えられない
Git が解決するのはこの4つです。 以降の章は、それぞれに対する回答になっています。
1-2 Git はセーブポイント付きのフォルダ
Section titled “1-2 Git はセーブポイント付きのフォルダ”Git の働きは、ゲームのセーブに対応させると見通しがよくなります。
| ゲーム | Git |
|---|---|
| セーブする | コミットする |
| セーブデータ一覧 | 履歴 |
| 前のセーブに戻る | 過去のコミットに戻る |
| セーブ名「ボス戦前」 | コミットメッセージ |
| 別ルートを試す | ブランチ |
セーブと違う点が1つあります。 ゲームのセーブは上書きされて消えますが、Git の履歴は消えずに全部積み上がります。 半年前のある1行が、いつ誰の手で入ったのかを後から辿れるのは、この性質のためです。
1-3 Git と GitHub は別物
Section titled “1-3 Git と GitHub は別物”ここが最も誤解されるところです。
flowchart LR
subgraph pc["自分の PC"]
git["Git<br/>履歴を記録するソフトウェア<br/>ネットがなくても動く"]
end
subgraph cloud["インターネット"]
gh["GitHub<br/>履歴を置いて共有する場所"]
end
git -- "push(送る)" --> gh
gh -- "pull(受け取る)" --> git
classDef local fill:#dbeafe,stroke:#3b82f6,color:#1e3a8a
classDef remote fill:#ede9fe,stroke:#8b5cf6,color:#4c1d95
classDef work fill:#f1f5f9,stroke:#94a3b8,color:#334155
classDef safe fill:#dcfce7,stroke:#22c55e,color:#14532d
classDef alert fill:#fef3c7,stroke:#f59e0b,color:#78350f
class git local
class gh remote
style pc fill:none,stroke:#3b82f6,stroke-dasharray: 4 4
style cloud fill:none,stroke:#8b5cf6,stroke-dasharray: 4 4
| Git | GitHub | |
|---|---|---|
| 何か | 履歴を記録するソフトウェア | Git のデータを置く Web サービス |
| どこにあるか | 自分の PC の中 | インターネット上 |
| 作ったのは | Linux の開発者たち(2005年) | 一企業(現在は Microsoft 傘下) |
| ないと困ること | 履歴管理ができない | 一人なら困らない。共有ができない |
Git は記録する道具、GitHub は記録を置いて共有する場所です。 Git はネットが繋がっていなくても使えます。 飛行機の中でもコミットはできて、地上に降りてから push すれば GitHub に反映されます。
GitHub 以外の置き場所
同じ役割のサービスに GitLab や Bitbucket があります。 自分でサーバーを立てることもできます。 Git と GitHub が一体のものではない、と分かっていれば十分です。