前回(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は自動的に大量の中間ファイルや実行ファイルを生成します。
SVNの時代は、フォルダごとのプロパティ(svn:ignore)で除外を設定していましたが、Gitではプロジェクトルートに配置するたった1枚のテキストファイル .gitignore で一元管理します!
③ C#開発で絶対に除外すべき4大カテゴリ
C#(.NET / Visual Studio)開発において、リポジトリに含めてはいけないファイルは大きく4つに分類されます。
-
1. ビルド成果物・中間生成物(
[Bb]in/,[Oo]bj/,*.dll,*.exe)
ソースコードからいつでも再生成できるバイナリです。コミットするとビルドのたびに競合が発生し、リポジトリ容量が爆発します。 -
2. Visual Studioの個人キャッシュ・作業状態(
.vs/,*.suo,*.user)
ウィンドウの配置、開いているタブ、ブレークポイントの位置など、開発者個人のローカル環境情報です。他人に共有するとレイアウトが破壊されたりパスエラーの原因になります。 -
3. パッケージキャッシュ(
packages/,TestResults/)
NuGetパッケージの実体や単体テスト実行ログです。dotnet restoreでネットから自動復元されるため、リポジトリに入れる必要はありません。 -
4. 機密情報・環境変数(
appsettings.Development.jsonの秘密鍵,.env)
データベースのパスワードやAPIキーが書かれたファイルです。GitHubにプッシュされると情報漏洩事故に直結します。
④ 誤ってコミットしてしまった時の救済手順(git rm --cached)
「すでに bin/ や .vs/ をコミットしてしまった! どうやって消せばいいの?」
ここで絶対にやってはいけないのが、エクスプローラーで通常通り削除したり、git rm を実行することです。手元の作業ファイルまで物理削除されてしまいます!
使うべき魔法のコマンドは git rm -r --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)での操作】
- 除外したいファイル(例:
binフォルダ)を右クリック。 - 「TortoiseGit」➡「無視リストに追加 (Add to ignore list)」➡「bin (再帰的)」 を選択。
- ダイアログで「.gitignore に追加」を選択して「OK」をクリック。
- これだけで、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 を実行する手順も示してください。」
①「.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 で救済する」というプロの鉄則を完全マスターしました!
コメント
コメントを投稿