生成AI研修
Part 2: 開発ツール基礎Git

Chapter 7: Git 入門(概念編)

バージョン管理の考え方と Git の基本概念

Chapter 7: Git 入門(概念編)

7.1 バージョン管理とは何か

バージョン管理とは、ファイルの変更履歴を管理する仕組みのことです。

たとえば、あなたが小説を書いているとします。第1章を書いて、第2章を追加して、第1章を大幅に書き直した。でも「やっぱり書き直す前の方が良かった」と思ったとき、バージョン管理があれば一瞬で元に戻せます。

ソフトウェア開発でも同じです。プログラムに新機能を追加したけれどバグが出てしまった。バージョン管理があれば、バグのない以前の状態にすぐ戻せます。

バージョン管理なしの問題点

project/
├── index_v1.html
├── index_v2.html
├── index_最終.html
├── index_最終2.html      ← どれが最新?
├── index_本当に最終.html
└── index_20240315.html

このようなファイル名でのバージョン管理は:

  • どれが最新か分からなくなる
  • いつ・誰が・何を変えたか分からない
  • チームで作業すると上書き事故が起きる

7.2 なぜ Git が必要なのか

Git はこれらの問題を根本から解決します。

問題Git による解決
どれが最新か分からない最新は常に1つ(ブランチの先端)
いつ誰が何を変えたか不明コミット履歴に記録される
上書き事故コンフリクト検知で事故を防ぐ
並行作業できないブランチで独立した作業空間を確保
過去に戻せない任意のコミットに戻れる

Git は 2005年にLinuxの生みの親、リーナス・トーバルズが開発しました。現在は世界中のソフトウェア開発で標準ツールとして使われています。

7.3 Git の基本概念

リポジトリ(Repository)

リポジトリとは、Gitが管理するプロジェクトのフォルダです。「リポジトリ」を略して「リポ」や「repo」とも呼びます。

git init コマンドを実行すると、フォルダ内に .git/ という隠しフォルダが作られます。ここにすべての履歴データが格納されています。

my-project/          ← リポジトリ(プロジェクトのフォルダ)
├── .git/            ← Gitの管理データ(触らない)
├── index.html
├── style.css
└── script.js

コミット(Commit)

コミットとは、**変更のスナップショット(記録)**です。「保存ポイント」と考えると分かりやすいでしょう。

各コミットには以下の情報が含まれます:

  • 変更内容(どのファイルが変わったか)
  • コミットメッセージ(変更の説明)
  • 作者情報(誰が変更したか)
  • 日時(いつ変更したか)
  • 固有のID(SHA-1ハッシュ)

ブランチ(Branch)

ブランチとは、開発の分岐点です。チームで複数人が別々の機能を同時に開発するときに使います。

メインの開発ライン(main ブランチ)を汚さずに、別のブランチで新機能を開発できます。完成したらメインに取り込む(マージする)という流れです。

ステージングエリア(Staging Area)

Git には「ステージングエリア」という中間地点があります。変更をコミットする前に「どの変更を記録するか」を選別する場所です。

この仕組みのおかげで、「今日変更したファイルのうち、Aファイルだけをコミットして、Bファイルはまだコミットしない」という細かいコントロールができます。

7.4 ローカルリポジトリとリモートリポジトリ

Git には2種類のリポジトリがあります。

種類場所説明
ローカルリポジトリ自分のPC自分だけの作業場所
リモートリポジトリGitHub等のサーバーチームで共有する場所

よく使う用語まとめ

用語意味
cloneリモートリポジトリをローカルにコピー
pushローカルの変更をリモートに送る
pullリモートの最新変更をローカルに取得
fetchリモートの変更情報だけを取得(マージしない)

まとめ

Git の核心的な概念を整理します。

  • リポジトリ: Gitが管理するプロジェクトフォルダ
  • コミット: 変更の記録(保存ポイント)
  • ブランチ: 独立した開発ライン
  • ステージングエリア: コミット前の選別場所
  • ローカル / リモート: 自分のPCとサーバーの2段構成

概念を理解したら、次は実際にコマンドを打って体験してみましょう。

次のステップ: 実践編 でコマンドを実際に手を動かして学びます。

On this page