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

【Day 06】C#特化の .gitignore 完全マスター 〜bin/objの事故を防ぐ〜

Day 06: C#特化の .gitignore 完全マスター
👨‍🏫
皆さん、こんにちは! 本日の講座へようこそ。
前回(Day 05)では、C#プロジェクトを git init で初期化し、Gitの「3つの領域(ワークツリー ➡ ステージ ➡ 金庫)」を行き来する基本を学びました。
本日は第6回として、C#開発者が絶対にマスターしなければならない最重要防衛ライン、「C#特化の .gitignore 完全マスター 〜bin/objの事故を防ぐ〜」を徹底解説します!

① 導入・本日の達成目標

「ビルドするたびに変更ファイルが何十個も出てきて、大事なソースコードの差分が埋もれてしまう…」
「他の人の環境設定(.suo.user)がコミットされてしまい、Visual Studioでビルドが通らなくなった!」

これらは、VSS/SVNからGitに移行した開発チームが**100%必ず経験する代表的なトラブル**です。
Gitでは、一度コミットしてしまうと過去の全履歴の中に巨大なDLLやバイナリが永遠に残り続け、リポジトリが数GBに肥大化してクローンが激重になってしまいます。

本日のゴールは以下の3点です:

  • なぜ bin/, obj/, .vs/, *.user などのファイルを**絶対にコミットしてはいけないのか**、その理由を完全理解する。
  • Microsoft公式の dotnet new gitignore を活用した**プロ仕様の .gitignore 設定**を習得する。
  • 万が一、誤ってコミットしてしまった場合の**「救済コマンド(git rm --cached)」**をマスターする。

② なぜ .gitignore が必要なのか? 〜SVNとの決定的な違い〜

C#のソリューションをビルドすると、Visual Studioは自動的に大量の中間ファイルや実行ファイルを生成します。

なぜ .gitignore が必要なのか
▲ 【図解①】ソースコード(管理対象)とビルド成果物・個人設定(除外対象)の選別

SVNの時代は、フォルダごとのプロパティ(svn:ignore)で除外を設定していましたが、Gitではプロジェクトルートに配置するたった1枚のテキストファイル .gitignore で一元管理します!

比較項目 旧来(SVNの svn:ignore) 現代(Gitの .gitignore)
設定の場所 ディレクトリごとの隠しメタデータ(属性) プロジェクト直下のテキストファイル(1ファイル)
共有のしやすさ フォルダ追加ごとに手動設定が必要 .gitignore 自体をコミットして全員へ一括共有
パターンの柔軟性 単純なワイルドカードのみ 階層指定、正規表現風、否定(!)など強力

③ C#開発で絶対に除外すべき4大カテゴリ

C#(.NET / Visual Studio)開発において、リポジトリに含めてはいけないファイルは大きく4つに分類されます。

C#の .gitignore 作成と基本ルール
▲ 【図解②】dotnet new gitignore と除外パターンの書き方(bin/, obj/, *.user)
  1. 1. ビルド成果物・中間生成物([Bb]in/, [Oo]bj/, *.dll, *.exe
    ソースコードからいつでも再生成できるバイナリです。コミットするとビルドのたびに競合が発生し、リポジトリ容量が爆発します。
  2. 2. Visual Studioの個人キャッシュ・作業状態(.vs/, *.suo, *.user
    ウィンドウの配置、開いているタブ、ブレークポイントの位置など、開発者個人のローカル環境情報です。他人に共有するとレイアウトが破壊されたりパスエラーの原因になります。
  3. 3. パッケージキャッシュ(packages/, TestResults/
    NuGetパッケージの実体や単体テスト実行ログです。dotnet restore でネットから自動復元されるため、リポジトリに入れる必要はありません。
  4. 4. 機密情報・環境変数(appsettings.Development.json の秘密鍵, .env
    データベースのパスワードやAPIキーが書かれたファイルです。GitHubにプッシュされると情報漏洩事故に直結します。

④ 誤ってコミットしてしまった時の救済手順(git rm --cached)

「すでに bin/.vs/ をコミットしてしまった! どうやって消せばいいの?」
ここで絶対にやってはいけないのが、エクスプローラーで通常通り削除したり、git rm を実行することです。手元の作業ファイルまで物理削除されてしまいます!

誤コミットの救済手順 git rm --cached
▲ 【図解③】手元の作業ファイルを消さずにGitの金庫からだけ安全に外す(git rm --cached)

使うべき魔法のコマンドは git rm -r --cached <フォルダ名> です!

💡 --cached オプションの仕組み:

手元のパソコン上にあるファイル(ワーキングツリー)はそのまま残し、「Gitの金庫(管理対象インデックス)」からだけ安全に登録を解除します。
その後 .gitignore に追加してコミットすれば、手元でビルドしつつ、Gitからは完全に無視されるクリーンな状態に戻せます!

⑤ 実践! 3大アプローチでの操作手順

【方法A: PowerShell CLIで一発生成&救済】

# 1. C#ソリューションのルートフォルダに移動
cd C:\Projects\MyCsharpApp

# 2. Microsoft公式の.NET特化型.gitignoreを一発生成!
dotnet new gitignore

# 3. (もし誤ってbin/objをコミットしてしまっていた場合の救済)
git rm -r --cached bin/ obj/ .vs/

# 4. 状態を確認(.gitignoreが追加され、bin/が管理から外れたことを確認)
git status

# 5. 除外設定をリポジトリに確定コミット
git add .gitignore
git commit -m "chore: C#開発用の .gitignore を追加しビルド成果物を除外"

【方法B: TortoiseGit(GUI)での操作】

  1. 除外したいファイル(例: bin フォルダ)を右クリック。
  2. 「TortoiseGit」➡「無視リストに追加 (Add to ignore list)」➡「bin (再帰的)」 を選択。
  3. ダイアログで「.gitignore に追加」を選択して「OK」をクリック。
  4. これだけで、TortoiseGitが自動的に .gitignore ファイルに追記してくれます!

【方法C: 4大AIエージェントへの指示プロンプト】

AIエージェント(Antigravity / Claude Code / ChatGPT / Copilot)に .gitignore の作成やメンテナンスを依頼する際の黄金プロンプトです:

「.NET 8 / Visual Studio 2022 で開発しているC#プロジェクトです。bin/, obj/, .vs/, *.user, packages/, テスト結果ログ, および機密設定ファイルを網羅したプロ仕様の .gitignore をプロジェクトルートに作成してください。もし既に誤って追跡されているファイルがあれば git rm --cached を実行する手順も示してください。」
⚠️ 30年選手が一番ハマる落とし穴!

①「.gitignore に書いたのに、なぜか bin/ の変更が検知され続ける!」
これはGit最大の罠です。.gitignore は**「まだGitに追跡されていない新規ファイル(Untracked)」にしか効きません**。
過去に一度でも git add されてしまったファイルは、.gitignore に追記しても無視されません。必ず git rm --cached で一度インデックスから登録解除してください!

② .gitignore 自体をコミットし忘れる事故
手元で .gitignore を作っただけでコミット・プッシュしないと、同僚のパソコンでは除外が効かず、同僚が bin/ をコミットしてしまいます。.gitignore は必ず最初にコミットして共有しましょう。

📌 本日のまとめ&宿題

第6回の講義、お疲れ様でした!
dotnet new gitignore で最初に防御壁を張る」「bin/obj や個人設定は絶対に入れない」「誤コミットは git rm --cached で救済する」というプロの鉄則を完全マスターしました!

次回【Day 07】は、いよいよ開発作業の基本リズム!「変更の記録とステージング(add / commit)の作法 〜1機能1コミットとAIメッセージ自動生成〜」を解説します。お楽しみに!

コメント

このブログの人気の投稿

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版のオンラインプレーを楽しむ方法