第1部では「集中型から分散型へのパラダイムシフト」と環境構築を完了しました。
本日からいよいよ【第2部: ローカル基本操作とC#設定】がスタートします!
第5回のテーマは、Gitのすべての基礎となる「リポジトリ作成(git init)と3つの領域」です。SVNには存在しなかった「ステージング(インデックス)」の真の価値を解き明かします!
① 導入・本日の達成目標
Subversion (SVN) や Visual SourceSafe (VSS) を長年使ってきたエンジニアが、Gitの基本操作で最初に戸惑うのが「なぜコミットする前に git add(ステージング)をしなければいけないのか?」という点です。
SVNでは編集したファイルをそのまま即座にコミット(サーバー送信)していたため、この「中間ステップ」が二度手間に感じられるかもしれません。
しかし、この「3つの領域(Working ➡ Staging ➡ Repository)」こそが、Gitを世界最強のバージョン管理ツールに押し上げた決定的な設計思想なのです。
本日のゴールは以下の3点です!
git initコマンドを実行した瞬間にフォルダ内部で何が起きているのかを理解する。- Gitの心臓部である「ワーキングツリー」「ステージングエリア」「ローカルリポジトリ」の3領域の関係性を完全に把握する。
- なぜステージングエリア(インデックス)が必要不可欠なのか、その3大メリットをC#開発の現場視点で腹落ちさせる。
② git init でフォルダに何が起きるのか?
C#のソリューションフォルダ(例: MyApp/)で git init を実行すると、一体何が起きるのでしょうか?
SVNでは、中央サーバー上にリポジトリを先に作成し、手元に「チェックアウト」して初めて管理が始まりました。
これに対してGitでは、手元の既存フォルダで git init を1発叩くだけで、そのフォルダの直下に.git という隠しフォルダ(ローカルデータベース)が生成されます。
この .git フォルダの中に、過去のコミット履歴、ファイルのスナップショット、設定情報(config)のすべてが自己完結して記録されます。
つまり、「サーバーとの通信を一切待たずに、手元のフォルダが一瞬で完全なGitリポジトリに進化する」のです。
③ Gitの心臓部:3つの領域とデータの流れ
Gitでファイルを管理するとき、コードは以下の「3つの部屋(領域)」を順番に移動していきます。
④ なぜ「ステージング(出荷準備)」が必要なのか?
SVNユーザーが一番疑問に思う「なぜダイレクトにコミットしないのか?」の答えがここにあります。
C#の開発現場を想像してみてください。丸一日作業していると、以下のような複数のファイルが同時に変更されることがよくあります。
UserService.cs(顧客情報取得の新機能実装)App.config(ローカル検証用のDB接続文字列変更)LogHelper.cs(一時的に仕込んだデバッグ用のConsole.WriteLine)
SVNのように「全変更を一括コミット」してしまうと、本番に入れてはいけないデバッグコードや個人設定まで巻き込んでコミットされ、履歴が汚れてしまいます。
Gitのステージングエリアを使えば、git add UserService.cs のように「新機能のコードだけを出荷トレイに載せてコミット」し、デバッグコードは手元に残したままにできます!
これにより、「1つのコミット=1つの意味ある変更単位」という美しく追跡しやすい履歴を維持できるのです。
⑤ 実践! C#プロジェクトの初期化と初コミット手順
【方法A: PowerShell CLIで実行する場合】
# 1. C#ソリューションのルートフォルダに移動 cd C:\Projects\MyCsharpApp # 2. リポジトリを初期化(.git フォルダが生成される) git init # 3. 現在のファイル状態を確認(赤字で Untracked files が表示される) git status # 4. ソースコードをステージングエリア(出荷準備トレイ)へ登録 git add Program.cs App.sln # 5. ローカルリポジトリへコミット(手元の金庫に記録) git commit -m "feat: C#プロジェクト初期構成の作成"
【方法B: TortoiseGit(GUI)で実行する場合】
- C#ソリューションフォルダの余白で右クリック ➡ 「Git ここにリポジトリを作成 (Git Create repository here...)」 を選択。
- 「Bare を作成」のチェックは外したまま「OK」をクリック(
.gitフォルダが生成されます)。 - 再度右クリック ➡ 「Git コミット (Git Commit...)」 を開くと、変更ファイル一覧が表示されます。
- コミットしたいファイル(
Program.csなど)にチェックを入れ、コミットメッセージを入力して「コミット」をクリック!
① git add . で巨大な bin/ や obj/ フォルダを丸ごとステージングしてしまう事故
C#プロジェクトで何も考えずに git add .(全追加)を実行すると、ビルド成果物である巨大なDLLやEXEまでステージングされてしまいます。
※次回【Day 06】で学ぶ .gitignore を設定するまでは、必要なファイルだけを個別に git add する習慣をつけましょう!
② TortoiseGitで「Bare リポジトリ」にチェックを入れて作成してしまう事故
初期化ダイアログにある「Bare」はサーバー共有用リポジトリを作るためのオプションです。作業用PCでは絶対にチェックを入れてはいけません(作業ファイルが消えて .git の中身だけになってしまいます)。
第5回の講義、お疲れ様でした!
「git init で手元が即座にリポジトリ化する」「3つの領域を行き来して選別コミットを作る」というGit最大のコア概念をマスターしました!
コメント
コメントを投稿