スキップしてメイン コンテンツに移動

【Day 05】C#プロジェクトのリポジトリ作成(git init)と「3つの領域」

Day 05: C#プロジェクトのリポジトリ作成と3つの領域
👨‍🏫
皆さん、こんにちは! 本日の講座へようこそ。
第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 を実行すると、一体何が起きるのでしょうか?

git init の仕組み
▲ 【図解①】git init でフォルダに何が起きるのか?(.git ローカルDBの誕生)

SVNでは、中央サーバー上にリポジトリを先に作成し、手元に「チェックアウト」して初めて管理が始まりました。
これに対してGitでは、手元の既存フォルダで git init を1発叩くだけで、そのフォルダの直下に.git という隠しフォルダ(ローカルデータベース)が生成されます。

この .git フォルダの中に、過去のコミット履歴、ファイルのスナップショット、設定情報(config)のすべてが自己完結して記録されます。
つまり、「サーバーとの通信を一切待たずに、手元のフォルダが一瞬で完全なGitリポジトリに進化する」のです。

③ Gitの心臓部:3つの領域とデータの流れ

Gitでファイルを管理するとき、コードは以下の「3つの部屋(領域)」を順番に移動していきます。

Gitの3つの領域
▲ 【図解②】Gitの心臓部:3つの領域(ワーキングツリー ➡ ステージング ➡ ローカルリポジトリ)
領域名 役割・実態 ファイルの状態と操作
① ワーキングツリー
(Working Tree)
実際にエディタ(VS/VS Code)でC#コードを編集している作業スペース。 Untracked / Modified
編集直後の状態。まだGitの記録候補に入っていません。
② ステージングエリア
(Index / Cache)
次のコミットに含めるファイルを一時的に載せる「出荷準備トレイ」。 Staged (git add 実行後)
コミット対象としてマークされた状態。
③ ローカルリポジトリ
(Repository)
.git 内の恒久的な金庫。過去の確定履歴がスナップショットとして保存される。 Committed (git commit 実行後)
不変のコミット履歴として安全に記録された状態。

④ なぜ「ステージング(出荷準備)」が必要なのか?

SVNユーザーが一番疑問に思う「なぜダイレクトにコミットしないのか?」の答えがここにあります。

なぜステージングが必要なのか
▲ 【図解③】なぜ「ステージング(出荷準備)」が必要なのか?(SVN一括 vs Git選別コミット)

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)で実行する場合】

  1. C#ソリューションフォルダの余白で右クリック ➡ 「Git ここにリポジトリを作成 (Git Create repository here...)」 を選択。
  2. 「Bare を作成」のチェックは外したまま「OK」をクリック(.git フォルダが生成されます)。
  3. 再度右クリック ➡ 「Git コミット (Git Commit...)」 を開くと、変更ファイル一覧が表示されます。
  4. コミットしたいファイル(Program.cs など)にチェックを入れ、コミットメッセージを入力して「コミット」をクリック!
⚠️ 30年選手が一番ハマる落とし穴!

git add . で巨大な bin/obj/ フォルダを丸ごとステージングしてしまう事故
C#プロジェクトで何も考えずに git add .(全追加)を実行すると、ビルド成果物である巨大なDLLやEXEまでステージングされてしまいます。
※次回【Day 06】で学ぶ .gitignore を設定するまでは、必要なファイルだけを個別に git add する習慣をつけましょう!

② TortoiseGitで「Bare リポジトリ」にチェックを入れて作成してしまう事故
初期化ダイアログにある「Bare」はサーバー共有用リポジトリを作るためのオプションです。作業用PCでは絶対にチェックを入れてはいけません(作業ファイルが消えて .git の中身だけになってしまいます)。

📌 本日のまとめ&宿題

第5回の講義、お疲れ様でした!
git init で手元が即座にリポジトリ化する」「3つの領域を行き来して選別コミットを作る」というGit最大のコア概念をマスターしました!

次回【Day 06】は、C#開発者が絶対にマスターすべき最重要設定!「.gitignore の極意 〜bin / obj / .vs フォルダを完全除外する〜」を徹底解説します。お楽しみに!

コメント

このブログの人気の投稿

Perfume、2025年末で“コールドスリープ(活動休止)”へ──東京ドーム2daysの記録と、公式・各界・ファンの声

  1) 公式発表・基本情報 活動休止(コールドスリープ)を正式発表 2025年9月21日、公式サイト「 Perfumeより 」で、2026年から一度コールドスリープに入ると発表。再始動の意思(“新しいPerfume”として戻る)も明記。 Perfume Official Site 今後の運用告知(配信・上映など) 同21日付の「 今後のPerfumeに関して 」で、9/23(火・祝)東京ドーム公演の LIVESHIP全世界生配信 および 全国ディレイビューイング 決定を案内。特設サイトも併記。 Perfume Official Site +1 公式グッズ **「Perfume Calendar 2026」**発売決定(B2壁掛け/表紙+2カ月1枚×6枚+ポスター)。テーマは“フルーツ”。 Perfume Official Site 2) 東京ドーム2days(9/22・23)要点 公演タイトル: ZO/Z5 Anniversary “ネビュラロマンス” Episode TOKYO DOME 。日程・開場/開演・会場・物販等の実務情報は特設で公開。 Perfume Official Site 9/23公演を世界配信(LIVESHIP) /ディレイビューイング実施。 Perfume Official Site 海外向け報道(英語)も「 indefinite hiatus 」として広く配信。 The Times of India 国内英字メディアも速報。 朝日新聞 3) 現地レポ( メリ爺 )から見える空気 あなたの現地記録(9/24公開)を、ファクトと現場情景の両面で反映: 両日参戦 。22日は アリーナ 、23日は 1階席から俯瞰 。前日の発表を受け、開演前のザワつき→MC後に“いつもの一体感”へ。開演は22日 18:45 頃。オープニングは**P³ツアー東京ドーム(2020/2)**と同趣向で“回収”の演出。 メリ爺のゲーム万歳 MC所感 :解散ではなく前向きな休止で不安を和らげる内容。 かしゆか の涙、 のっち の気丈さ、 あ〜ちゃん の思い出語り──3人の結束と「 また戻る 」約束が強く刻まれた。 メリ爺のゲーム万歳 体感時間 : “3時間弱”級のボリューム ながら“過去一...

【Perfume】Perfume 3rd Tour 「JPN」さいたまスーパーアリーナに行って参りました~

Perfume 3rd Tour 「JPN」1月28日、29日の2daysで参戦して参りました。 ファンクラブ会員の選考抽選会に28日、29日の両日で申し込んでいたんですが、両方とも当選していたという嬉しい誤算。 仕事だぁ、なんだかんだと紆余曲折ありまして28日の参戦は危ぶまれていたのですが、なんとかかんとか28日は40分遅刻しながらも参戦、29日はフル参戦する事が出来ました(∩´∀`)∩

ニンテンドースイッチでオンラインゲームを遊ぶには?

モンスターハンターライズが発売になって、家族でモンハン楽しみたい人が増えたみたいですね。 某ブログの検索キーワードを調べると、モンハンを家族でやるにはどうしたらいいのか?を調べている人が沢山いるのがわかります。 ※これでも一部  家族で協力するにはSwitch2台、ソフトも2つ購入する必要があります。 1台のスイッチでは遊べませんし、ソフト1つでも遊べません。 でも、1台のスイッチで別々アカウントがあれば交代で遊ぶこともできますよ。セーブデータもしっかり分かれます。 Switchのオンラインゲームを家族で遊ぶ方法については以下の記事にまとめてますのでよろしければ参考にしてみてくださいね。 家族でモンスターハンターライズDL版のオンラインプレーを楽しむ方法