この記事の対象読者
- 初心者エンジニア・プログラマー
- Git の概念だけ理解したい方
- 「Gitって何?」状態の方
この記事でわかること
- Git の基本概念
- リモートリポジトリとローカルリポジトリの違い
clone/git init/branchの役割
目次
1. はじめに
こんにちは。社会人2年目の SE です。
この記事では、Git 初心者の方が Git の仕組みをざっくり理解すること を目的に、
「チームで最高のミートソーススパゲッティを作るプロジェクト🍝」 に例えて解説します。
Git は最初こそ難しく感じますが、理解すると チーム開発を助ける強力なツール です。
2. Git との出会い
学生時代の私は、いわゆる スパゲッティコード を量産していました。
- 変数は
aやb - とりあえず動けば OK
- バージョン管理?上書き保存で十分でしょ?
コードはどんどん絡まり、まさに ぐちゃぐちゃに絡まったスパゲッティ の状態。
社会人になり、初めてチーム開発の研修で Git を使うことになったときは、
Git?面倒だな。
上書き保存で十分じゃない?
と本気で思っていました。
でも実際に使ってみると、Git は チームで安全に作業するための便利な道具 だと気づき、
今では なくてはならない存在 になっています。
3. Git とは?
Git は、コード(=材料と手順)の変更履歴を管理する「分散型バージョン管理ツール」 です。
イメージは 「調理作業を安全にセーブできるレシピ管理ツール」 です。
Git があれば いつでも失敗前の状態に戻せます。
例えば、ミートソースのつもりが間違ってデスソースをかけてしまっても、
ソースをかける前の状態を 保存(コミット) していれば元に戻せます。
Git ができること:
- 誰が何を変更したか確認できる
- 失敗しても過去の状態に戻せる
- チームで安全に作業を共有できる
4. リポジトリとは?(レシピ帳そのもの)
リポジトリは、コードや変更履歴を保存する場所 です。
レシピ帳そのものだと思ってください。
種類は2つ:
- リモートリポジトリ:チームの共有レシピ
- ローカルリポジトリ:自分の PC にある試作レシピ
5. リモートリポジトリ(チームで共有するレシピ)
リモートリポジトリは、チームで共有するレシピ です。
その中に、チーム全員で作る基準となるレシピ があります。
たとえば役割分担:
- Aさん(パスタ茹で時間担当)
- Bさん(ソース担当)
- Cさん(盛り付け担当)
全員の作業を最終的に公式レシピへまとめていきます。
6. ローカルリポジトリ(個人の試作レシピ)
ローカルリポジトリは、自分の PC にある試作レシピ です。
盛り付け担当のCさんが、パセリや粉チーズ、納豆などいろいろ試しても、
他の人の作業には影響しません。
ここで自由に試作し、完成したら公式レシピに反映します。
7. clone / git init(共有レシピの内容を丸ごとコピー / 新規作成)
Git でプロジェクトを始めるとき、状況によって使い分けます。
7-1) 既存プロジェクトに参加する場合
- すでに共有レシピ(リモート)がある
- 自分の PC にコピーして作業したい
→ clone を使います。
履歴ごとコピーされ、共有レシピの内容を自分の PC に持ってきて作業を始めます。
git clone リポジトリのURL
7-2) 完全に新しいプロジェクトを作る場合
- まだ共有レシピもない
- ゼロから自分のレシピ帳(ローカルリポジトリ)を作る
→ git init を使います。
必要に応じて後からリモートに登録可能。
git init
💡ポイント:
-
clone= 既存の共有レシピをコピー -
git init= 自分のレシピ帳を新規作成
8. branch(アレンジ用の試作ライン)
ブランチは、作業内容を分けて安全に試すための「試作ライン」 です。
レシピを分岐させて同時に試作できる調理台のようなものです。
※厳密には「作業スペース」ではなく「履歴の分岐を指す名前」
英語の「branch(枝)」のように、木の枝のように分かれて作業が並行して進むイメージ です。
mainが「完成版レシピ」、feature/Aやfeature/Bが「作業用(試作レシピ)」です。
枝分かれして作業しても、mainは安全に保たれます。
メリット:
- 他人の作業を壊さない
- 複数の試作を同時に進められる
- 安全に失敗できる
完成したら、自分のブランチを統合(マージ)します。
- 多くのプロジェクトでは main を完成版として扱いますが、運用ルールによっては別のブランチ(develop など)を公式にする場合もあります
- どのブランチにマージするかは、プロジェクトの運用ルールに従ってください
9. まとめ
| 用語 | イメージ |
|---|---|
| Git | 作業を安全にセーブできる レシピ管理ツール |
| リポジトリ | 保存する レシピ帳 |
| リモートリポジトリ | チームで 共有するレシピ |
| ローカルリポジトリ | 個人の 試作レシピ |
| clone | 公式レシピを 丸ごとコピー |
| git init | ゼロから 自分のレシピ帳を作る |
| branch | アレンジ用の 試作ライン |
Git は最初は難しく感じますが 「チームで共有するレシピと自分の試作レシピの関係」 を意識すると理解しやすくなります。
後編では、実際に使う Git コマンド(commit, push, pull, merge など)を解説予定です。