0から分かるGitとGitHub:なぜプロは「時間を巻き戻せる」のか
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つの箱の移動で理解できます。
- ワーキングツリー (Working Tree):あなたが今、実際に編集しているフォルダ。
- ステージングエリア (Index):「次のセーブポイントに入れるよ」と予約する場所。
- リポジトリ (Repository):セーブポイント(コミット)が蓄積される、変更履歴のデータベース。
流れ: 編集する(ワーキングツリー)→ git add で予約する(ステージング)→ git commit で保存する(リポジトリ)。
ステージ3:なぜ「セーブ」ではなく「コミット」なのか?
コミットは、単なる保存ではありません。**「誰が」「いつ」「なぜ」**変更したかというメッセージ付きの「歴史の1ページ」です。だから、後から「あの時の状態に戻りたい」と思った時、正確に時間を巻き戻せるのです。
触って試す:コミットの積み重ね体験
⏱️ コミットの積み重ね体験
下の文章を書き換えて「コミットする」を押すと、その時点の内容が履歴に記録されます。下の履歴をクリックすると、その時の文章に戻って見られます。これがGitの核、「時間を巻き戻せる」仕組みです。
履歴(新しい順)
まずは文章を書き換えて、コミットしてみてください。
2. 深掘り:なぜ「分散型」なのか?~図解で理解する~
Gitがすごいのは、履歴があなたのPCの中に丸ごとあることです。これを「分散型バージョン管理」と呼びます。
中央サーバーが壊れても、誰かのPCに全履歴が残っているため、開発が止まりません。
ブランチ(Branch)の本質
ブランチとは、履歴の「分岐」です。main(本番)から枝分かれして、自分の作業用コピーで自由に実験し、完成したらmainに合流(マージ)させます。これにより、他の人の作業を壊さずに、並行開発が可能になります。
3. 限界と落とし穴
- Gitは万能ではない: 大きなバイナリファイル(動画など)の管理は苦手です。
- GitHubはGitそのものではない: GitHubは、Gitのリポジトリをインターネット上で共有・協業するための「場所(ホスティングサービス)」です。
- 履歴の改ざんリスク: コミット履歴を書き換える操作(
rebaseなど)は、共有リポジトリでは慎重に行う必要があります。
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
git log --onelineで、2つのコミットが履歴として残っていることを確認してください。- 最後の
git log --graph --allで、ブランチが分岐している様子が図で表示されます。
5. まとめと次回予告
Gitは「変更履歴を保存する仕組み」であり、GitHubは「その履歴を共有して協業する場所」です。この2つを理解すれば、チーム開発の土台は完成です。
次回予告: 第2回では、この「履歴」と「バージョン管理」の考え方が、なぜ大規模言語モデル(LLM)の学習にもつながるのかを解説します。