0から分かるGitとGitHub:なぜプロは「時間を巻き戻せる」のか

2026-11-03 / シリーズ「0から分かる」 第1回

0から分かるGitとGitHub:なぜプロは「時間を巻き戻せる」のか

この記事のゴール: 読んだ後、「Gitがなぜ必要で、GitHubが何を解決するのか」を自分の言葉で説明できるようになる。

1. 基礎:Gitは「変更履歴を保存する」仕組み

ステージ1:直観理解(なぜ必要か?)

あなたがレポートを書いているとします。report_final.docx、report_final_v2.docx、report_final_v2_really_final.docxと、ファイル名でバージョン管理をした経験はありませんか?

Gitは、この「ファイル名地獄」を解決します。Gitは、ファイルの変更履歴そのものを、タイムラインとして保存する仕組みです。

ステージ2:仕組み(3つの箱)

Gitの操作は、たった3つの箱の移動で理解できます。

  1. ワーキングツリー (Working Tree):あなたが今、実際に編集しているフォルダ。
  2. ステージングエリア (Index):「次のセーブポイントに入れるよ」と予約する場所。
  3. リポジトリ (Repository):セーブポイント(コミット)が蓄積される、変更履歴のデータベース。

流れ: 編集する(ワーキングツリー)→ git add で予約する(ステージング)→ git commit で保存する(リポジトリ)。

ステージ3:なぜ「セーブ」ではなく「コミット」なのか?

コミットは、単なる保存ではありません。**「誰が」「いつ」「なぜ」**変更したかというメッセージ付きの「歴史の1ページ」です。だから、後から「あの時の状態に戻りたい」と思った時、正確に時間を巻き戻せるのです。

触って試す:コミットの積み重ね体験

⏱️ コミットの積み重ね体験

下の文章を書き換えて「コミットする」を押すと、その時点の内容が履歴に記録されます。下の履歴をクリックすると、その時の文章に戻って見られます。これがGitの核、「時間を巻き戻せる」仕組みです。

履歴(新しい順)

まずは文章を書き換えて、コミットしてみてください。

2. 深掘り:なぜ「分散型」なのか?~図解で理解する~

Gitがすごいのは、履歴があなたのPCの中に丸ごとあることです。これを「分散型バージョン管理」と呼びます。

💻 あなたのPC ローカルリポジトリ ☁️ GitHub リモートリポジトリ 💻 他の人のPC ローカルリポジトリ push(送る) pull / clone(受け取る) pull / clone(受け取る) どのPCにも全履歴があるから、中央サーバーが壊れても開発は止まらない

中央サーバーが壊れても、誰かのPCに全履歴が残っているため、開発が止まりません。

ブランチ(Branch)の本質

ブランチとは、履歴の「分岐」です。main(本番)から枝分かれして、自分の作業用コピーで自由に実験し、完成したらmainに合流(マージ)させます。これにより、他の人の作業を壊さずに、並行開発が可能になります。

3. 限界と落とし穴

4. 実践:Google ColabでGitを体験する

以下のコードをGoogle Colabのセルに貼り付け、順に実行してください。自分のPCにGitをインストールしなくても、Gitの核心が体験できます。

# 1. 作業ディレクトリを作成
!mkdir -p /content/my_first_repo
%cd /content/my_first_repo

# 2. Gitリポジトリを初期化(履歴の箱を作る)
!git init

# 3. ファイルを作成し、コミットする
!echo "Hello, Git!" > hello.txt
!git add hello.txt
!git config user.email "you@example.com"
!git config user.name "Your Name"
!git commit -m "最初のコミット:Hello, Git!"

# 4. 変更して、2回目のコミットをする
!echo "2行目を追加しました" >> hello.txt
!git add hello.txt
!git commit -m "2行目を追加"

# 5. 履歴を確認する(時間を巻き戻せることを確認)
!git log --oneline

# 6. ブランチを作成して切り替える
!git branch feature-branch
!git checkout feature-branch
!echo "実験中の機能" >> hello.txt
!git add hello.txt
!git commit -m "実験ブランチでの変更"
!git log --oneline --graph --all

5. まとめと次回予告

Gitは「変更履歴を保存する仕組み」であり、GitHubは「その履歴を共有して協業する場所」です。この2つを理解すれば、チーム開発の土台は完成です。

次回予告: 第2回では、この「履歴」と「バージョン管理」の考え方が、なぜ大規模言語モデル(LLM)の学習にもつながるのかを解説します。


確認クイズ

📝 確認クイズ(3問)