AIゲーム制作ラボ
環境構築6分で読めます

Unityプロジェクトのgit管理(.meta・1.9GBの除外・AIに触らせる前提)

Unity のプロジェクトをそのまま git に入れると 2GB 近くになります。除外すべきフォルダ、必ずコミットする .meta、LFS が使えない置き場での判断、そして AI にシーンファイルを触らせないための作り方を、実際のリポジトリの数字つきで残します。

Libra

公開 2026年9月18日

この記事の要点4 points

  1. Library/1.9GB あるが、除外してよい。 追跡したのは160ファイル、リポジトリは 1MB で済んでいる。
  2. .meta は必ずコミットする。 参照は GUID で繋がっているので、消えると参照が切れる(追跡ファイルの44%が .meta)。
  3. 🔴 シーンやプレハブのファイルを AI に直接書き換えさせない。 シーンはエディター用スクリプトから作り直す形にした。
  4. LFS が使えない置き場なら、素材ファイルを持たない作りにするほうが早い この2本はどちらも画像・音声ファイルが0個
目次6
検証した環境最終確認 2026年9月18日
  • Windows 11
  • Unity 6.6(6000.6.0f1)
  • 置き場:自前サーバーの bare リポジトリ(git 1.8.3 系・git-lfs 無し)

書いてあるのは、この環境で実際に試した結果です。ツールの仕様や料金は変わるので、重要な判断の前には公式の情報も確認してください。

Unity のプロジェクトフォルダは、放っておくとすぐ 2GB を超えます。そのまま git に入れると、clone にも push にも耐えられません。

実際に使っている2本ぶんの数字がこれです。

1.9GB

Library(除外)

Unity が作り直せる

160

追跡しているファイル

うち .meta が70

1MB

リポジトリの大きさ

もう1本は 1.9MB

0個

画像・音声ファイル

LFS が要らない理由

除外するのは「Unity が作り直せるもの」

判断はこれだけです。消してもエディターが作り直せるものは入れない。

除外したフォルダ

Library/(1.9GB・インポート結果のキャッシュ)
Temp/(実行中の一時ファイル)
obj/(C# のビルド中間物)
Build/ Builds/(ビルド成果物)
Logs/ UserSettings/(ログと、その端末だけの設定)
.vs/ .idea/ *.csproj *.sln(IDE 用。Unity が再生成する)

土台は GitHub 公式の Unity.gitignore で足ります。そこから、このプロジェクトでは2行だけ足しました。

# Claude Code の個人設定(共有する .claude/settings.json は含める)
.claude/settings.local.json

# 計測用に一時的に置くページ(ビルドのフォルダは元から対象外)
measure.html

⚠️ 除外したフォルダは git が掃除してくれない

Builds/ を除外していると、古いビルドがいつまでも残ります。 実際に、前のビルドの残骸が入ったままのフォルダをまるごとアップロードして、古い中身を本番に配ってしまいました。git の管理外にあるものは、自分で消すか、公開用のスクリプト側で検査する必要があります。

.meta は必ずコミットする(追跡ファイルの44%)

Unity は、ファイル同士の参照をパスではなく .meta に書かれた GUID で解決します。スクリプトをコンポーネントに割り当てた情報も、この GUID 経由です。

.meta を除外すると、別の端末で開いたときに参照が全部切れます。追跡している160ファイルのうち70ファイル、全体の44%.meta でした。数は多いですが、どれも小さいテキストです。

逆に、除外したフォルダの中の .meta は要りません(そもそも生成されません)。

シーンとプレハブは、AI に直接書き換えさせない

ここがいちばん効きました。

.unity.prefab は、GUID と入れ子の参照を持つ YAML です。人が読める形ではありますが、AI に「このオブジェクトを足して」と言ってファイルを書き換えさせると、静かに壊れます。 壊れ方も分かりにくい(開くと空のシーンになる、参照だけ外れる、など)。

そこで、シーンをコードから作り直すようにしました。

[MenuItem("Wallflip/シーンを作り直す")]
public static void CreateScene()
{
    var scene = EditorSceneManager.NewScene(NewSceneSetup.EmptyScene, NewSceneMode.Single);

    var camGo = new GameObject("Main Camera", typeof(Camera));
    camGo.tag = "MainCamera";
    var cam = camGo.GetComponent<Camera>();
    cam.orthographic = true;
    // …(以下、必要なオブジェクトを同じように足していく)

この形にすると、こうなります。

シーンを手(AI)で書き換える

YAML の GUID と入れ子を正しく保つ必要がある
壊れても、エディターで開くまで分からない
差分がレビューできない(行の順番が変わる)
シーンの中身がどうなっているか、ファイルを読まないと分からない

シーンをコードから作り直す

中身の定義が C# なので、そのままレビューできる
メニュー1つで元どおりに作り直せる
壊れたら作り直せばよい(254行の .unity は使い捨て)
AI に渡すのもコードなので、いつもの書き換えと同じ

実際、コミットされている .unity254行あります。これは「スクリプトの出力結果」であって、正本はスクリプトのほうです。

シーンファイルは成果物として扱う。正本はそれを作るコードに置く。

LFS が使えない置き場なら、素材を持たない作りにする

このプロジェクトの git の置き場は自前のサーバーで、git は 1.8.3 系・git-lfs 無しです。大きいバイナリを入れる前提がありません。

置き場を変える手もありましたが、先に作り方のほうを変えました。画像も音声もファイルを持たず、図形と波形をコードで作る方式です(素材ファイルなしで音と絵を作る)。結果として、LFS が必要になる場面自体が来ていません。

素材を持つ前提で進める

  • 置き場を LFS 対応のものに移す
  • 拡張子ごとに LFS の設定を管理する
  • 別端末の clone が重くなる

この段階で選んだ方

  • 素材ファイルを持たない作りにする
  • リポジトリは 1MB と 1.9MB のまま
  • 素材が増える段階になったら、そのとき置き場を見直す

ゲームは、サイトとは別のリポジトリにした

このサイトの本体(Next.js とドキュメント)と、ゲームは別のリポジトリにしています。サイト側の .gitignore1行目が /games/ です。

理由は3つあります。

  1. 1

    デプロイに巻き込まない

    サイトは push でデプロイまで走らせるので、ゲームの作業中のコミットを混ぜたくない
  2. 2

    履歴を分ける

    ゲームの履歴は「その1本の作業記録」。サイトの記事の履歴と混ざると、あとから読めない
  3. 3

    置き場を変えやすくする

    素材が増えてゲームだけ別の置き場に移す、という判断がしやすい

別の端末で作業を始めるときは、サイトを clone してから、games/ の下に各ゲームを clone します。ここだけ手順が1つ増えますが、別々に動かせる利点のほうが大きいと判断しました。

まとめ

  • 除外の基準は「Unity が作り直せるか」。Library/1.9GB あるが入れなくてよい
  • .meta は必ずコミットする(参照が GUID で繋がっている。追跡ファイルの44%
  • 🔴 シーンとプレハブのファイルは AI に直接書かせない。 コードから作り直す形にすると、差分がレビューできて壊れても作り直せる
  • LFS が使えない置き場なら、素材を持たない作りにするほうが早い
  • 除外したフォルダは git が掃除しない。ビルドの残骸を配ってしまう事故は、公開用のスクリプト側で止める

FAQ

よくある質問

Unity プロジェクトで git に入れてはいけないフォルダはどれですか?

Library / Temp / obj / Build(s) / Logs / UserSettings です。どれも Unity が作り直せます。このプロジェクトでは Library だけで 1.9GB ありました。GitHub 公式の Unity.gitignore が土台として使えます。

.meta ファイルはコミットすべきですか?

必ずコミットします。Unity はファイル同士の参照を .meta の中の GUID で解決するので、.meta が欠けると参照が切れます。逆に、除外したフォルダの .meta は要りません。

AI にシーンファイルを編集させてもいいですか?

おすすめしません。.unity や .prefab は GUID と入れ子構造を持つ YAML で、手で書き換えると壊れやすいからです。このプロジェクトでは、シーンをエディター用スクリプトから作り直す形にして、ファイルそのものは触らせていません。

Git LFS が使えない置き場ではどうすればいいですか?

大きい素材を持たない作りにするのが、いちばん手間がかかりません。画像・音声をコードで生成する方式にしたところ、ゲーム2本のリポジトリは 1MB1.9MB に収まりました。素材が増える段階になったら、置き場のほうを見直します。

SOURCES

出典

  1. 01Unity.gitignore(GitHub 公式のテンプレート集)GitHub除外フォルダの土台として内容を確認

この記事は役に立ちましたか?

NEXT