目指せGit&GitHubマスターvol.1:「Git」の重要性と基礎概念
はじめに
こんにちは。
先日ZennのGitHub連携を試してみました。GitHubとZennの連携はできたけれど、使い方がさっぱりわからない。
また、Gitの知識があった方が生成AIを扱うには便利とXで見ました。
もうひとつ理由をつけるなら、ファイルが壊れることを心配するくらいにはファイルが増えてきているので、ファイル管理システムについて理解を進めたいという理由もあります。
というわけで、このタイミングで積読状態だったGitHubの本を読んで、GitHubをマスターできるように「Git」の学習を始めました。
バージョン管理システムについて、今回は書籍『いちばんやさしいGit & GitHub』を読み、Gitの基本的な仕組みと、なぜこれが必要なのかを整理した備忘録です。
1. Gitとは何か?:ファイルの「変更履歴」を保存するツール
開発中、バックアップのために「weather_server_v1.py」「weather_server_final.py」「weather_server_final_v2.py」のようにファイルをコピーして保存した経験はないでしょうか?
Gitは、この煩わしいファイル管理を解決する**バージョン管理システム(VCS)**です 。
役割: ファイルの状態を好きなタイミングで更新履歴として保存し、いつでも過去の状態に戻せるようにします 。
記録される情報: 「誰が」「いつ」「何を変更したか」が明確に記録されます 。
特徴: インターネットに繋がっていなくても、ローカル(自分のPC)だけで利用可能です 。
2. 混乱しがちな用語の整理:リポジトリとGitHub
学習して最初に躓きそうになったのが用語の定義です。特に「リポジトリ」の概念を整理しました。
リポジトリ(Repository)
ファイルやディレクトリの状態を保存する「データベース」のような場所です 。
リモートリポジトリ: 専用のサーバー(GitHubなど)に配置されるリポジトリ。複数人で共有するために使います 。
ローカルリポジトリ: 自分のPC(手元)にあるリポジトリ。自分だけの作業用です 。
GitHubの役割
GitとGitHubは別物です。
Git: バージョン管理を行うツール(仕組み)そのもの。
GitHub: Gitのリポジトリを預かってくれる「ホスティングサービス」 。
Git(ギット)は、ファイルのバージョン管理を行うため、
GitHubは、Gitの仕組みを利用して、インターネット上でのスムーズな共同作業を可能にしたWebサービスです。
3. Gitの作業フロー:ワークツリー・インデックス・コミット
Gitでの保存作業は、単なる「上書き保存」とは異なり、3つのエリアを経由します。
コード スニペット
graph LR
A[ワークツリー
(作業場)] -->|git add| B[インデックス
(ステージング)]
B -->|git commit| C[リポジトリ
(記録場所)]
① ワークツリー (Working Tree)
私たちが普段エディタで開いて編集している、実際のディレクトリのことです 。ここでファイルを変更します。
② インデックス (Index) / ステージングエリア
ここがGitの面白いところですが、変更したファイルをいきなりリポジトリに保存するのではなく、「次回コミットするファイル」を選んで一時的に置く場所があります。これがインデックスです 。 git add コマンドで、変更をここに登録します 。
③ コミット (Commit)
インデックスにあるファイルの状態を、リポジトリに記録することです 。 コミットは、ゲームでいう**「セーブポイント」**を作る作業だと理解しました 。バグが発生しても、コミットした時点の状態であればいつでもロードして戻ることができます。
4. 実践:Gitの基本コマンド
実際にWindows環境(Git Bash)で手を動かしてみました 。
初期化: git init
ディレクトリをGitの管理下(リポジトリ)にします 。
状態確認: git status
どのファイルが変更され、どのファイルがインデックスにあるかを確認します 。
ステージング: git add <ファイル名>
ワークツリーの変更をインデックスに登録します 。
記録: git commit -m "メッセージ"
インデックスの内容をリポジトリに保存します 。
まとめ
MCPサーバーの開発では、JSON設定やPythonコードを一文字間違えるだけで動かなくなることを経験しました。Gitを使えば、「動いた状態」をコミット(セーブ)しておき、安心して次の機能追加やリファクタリングに挑戦できます。
今回はローカルでの作業フロー(第3章まで)を学びましたが、次は作成したリポジトリをGitHub(リモートリポジトリ)にプッシュして共有する方法を学んでいきたいと思います。
参考文献
『いちばんやさしいGit & GitHubの教本』(インプレス)
Discussion