Unityプロジェクトでは、Libraryなどの生成キャッシュをGitから除外し、Assets・Packages・ProjectSettingsと素材の.metaを管理します。
.gitignoreの場所と設定例
UnityのAssets・Packages・ProjectSettingsと同じ階層に、拡張子のない.gitignoreをUTF-8で保存します。
リポジトリの中にUnityプロジェクトを置く場合も、この例はUnity側の階層に置きます。
先頭の/は.gitignoreのある階層を基準にする指定です。
# Put this file beside Assets, Packages and ProjectSettings.
# Generated caches and local editor settings
/[Ll]ibrary/
/[Tt]emp/
/[Oo]bj/
/[Bb]uild/
/[Bb]uilds/
/[Ll]ogs/
/[Uu]ser[Ss]ettings/
/[Mm]emoryCaptures/
.vs/
.gradle/
# Generated IDE files
*.csproj
*.sln
*.slnx
*.user
*.userprefs
*.pidb
*.pdb
*.mdb
*.opendb
*.VC.db
*.pidb.meta
*.pdb.meta
*.mdb.meta
# Generated Addressables data in platform subfolders
/[Aa]ssets/[Aa]ddressable[Aa]ssets[Dd]ata/*/*.bin*
/[Aa]ssets/[Ss]treamingAssets/aa/
/[Aa]ssets/[Ss]treamingAssets/aa.meta
# Source assets, their .meta, Packages and ProjectSettings stay tracked.
説明行は#で始めます。
旧版で#が抜けていた説明は除外パターンとして解釈されるため修正しました。
Addressablesの.bin生成物は、プラットフォーム別の下位フォルダーにあるものを指定しています。
独自の配置では、対象パスを確認して追加してください。
この例は生成物の基本設定です。
プラグイン固有の例も必要な場合はGitHubのUnity.gitignoreを読み、自分の構成に該当する項目だけを確認します。
除外結果を確認してからコミットする
以下はプロジェクトのルートで実行する、コマンドプロンプト用の例です。
Library/cache.binとAssets/Scenes/Test.unityは手元にあるパスへ置き換えます。
git check-ignore -v -- "Library/cache.bin"
git check-ignore -v -- "Assets/Scenes/Test.unity" "Assets/Scenes/Test.unity.meta" "Packages/manifest.json" "ProjectSettings/ProjectVersion.txt"
git status --short
Library/cache.binには一致したルールが出ます。
後半のソース4件には一致行が出ないことを確認します。
check-ignoreは、すでに追跡中のファイルを通常は表示しません。
追跡の有無は次節のgit ls-filesで別に確認します。
Assets内の.metaには参照をつなぐGUIDがあるため、素材と一緒にコミットします。
.meta全部を除外すると、別のPCで参照が変わる原因になります。
Packages/manifest.json・packages-lock.jsonやProjectSettingsも必要なソースです。
追跡済みのファイルも含めて除外ルールを調べる場合は、--no-indexを付けます。
git check-ignoreの公式説明にある、インデックスを参照せず判定するための指定です。
git check-ignore -v --no-index -- "Library/cache.bin"
git check-ignore -v --no-index -- "Assets/Scenes/Test.unity" "Assets/Scenes/Test.unity.meta" "Packages/manifest.json" "ProjectSettings/ProjectVersion.txt"
このコマンドはルールの確認だけを行い、追跡を解除する操作ではありません。
表示された行では、ルールの出典ファイルとパターンを読みます。
自分の設定に!で始まる例外がある場合、その一致行は除外しない指定です。
出力があることだけで、除外対象だと判断しないでください。
すでに追跡したLibraryを管理対象から外す
.gitignoreを追加しても、追跡中のファイルは管理から外れません。
次の例ではLibraryだけをGitのインデックスから外し、ディスク上のLibraryは残します。
Assetsなどを含むリポジトリ全体を指定しないでください。
git ls-files -- "Library" "Temp"
git rm -r -n --cached -- "Library"
git rm -r --cached -- "Library"
git add -- .gitignore
git diff --cached --stat
最初の一覧でLibraryが追跡されているかを確認し、-n付きのコマンドで対象をプレビューします。
Libraryが未追跡ならgit rmは不要です。
最後の差分にLibraryの削除と.gitignore以外が混ざる場合は、コミットせず対象を見直します。
上のステージ復元手順は、既存コミットがあるリポジトリを前提にしています。
初回コミット前の状態を、この復元例と同じ条件として扱わないでください。
コミット前に取り消す場合は、次のコマンドでLibraryと.gitignoreのステージだけを戻します。
ディスク上の.gitignoreの編集は残ります。
git restore --staged -- "Library" ".gitignore"
差分を確認した後は、チームの手順でコミットします。
コミット後に設定を戻す場合は対象コミットをレビューして取り消し、共有済みの履歴を強制的に書き換えないでください。
skip-worktreeをローカル設定の代わりにしない
skip-worktreeとassume-unchangedは、追跡済みの制作ファイルを安全に無視するためのバックアップ機能ではありません。
シーンの変更がstatusから見えなくなっても、変更が保存されたことにはなりません。
共有する設定は通常どおり管理し、個人用の設定はUserSettingsや除外済みの別ファイルへ分けます。
過去にskip-worktreeを付けたファイルは、git ls-files -vで先頭がSになっているか確認し、--no-skip-worktreeで戻します。
次は練習用シーンに付けてすぐ戻す例です。
実データの編集を隠す用途には使いません。
git update-index --skip-worktree -- "Assets/Scenes/Test.unity"
git ls-files -v -- "Assets/Scenes/Test.unity"
git update-index --no-skip-worktree -- "Assets/Scenes/Test.unity"
git status --short -- "Assets/Scenes/Test.unity"
解除後はgit status --shortで未コミットの変更を確認します。
旗を付けたままpullや切り替えを続けず、変更内容を別途保存してから通常の管理へ戻します。
Unityの設定と検証範囲
シーンやプレハブを文字の差分として扱う場合は、Unity EditorのProject SettingsでAsset SerializationをForce Textにし、.metaを含めて管理します。
設定画面と実際のシーン保存は今回未検証です。
2026年10月2日、Git 2.54.0.windows.1の練習用リポジトリで、生成物の除外・ソースと.metaの保持、Libraryの追跡解除とステージの復元、skip-worktreeの設定・解除を確認しました。
検証では元のファイル内容を保持しています。
仕様:gitignore、git update-index。
2026年10月26日、WindowsのGit 2.54.0.windows.1で別の練習用リポジトリを作り、追加検証しました。
追跡済みLibraryは通常のcheck-ignoreで表示されず、--no-index付きでは除外ルールが表示されました。
ソース4件に除外ルールが一致しないこと、Libraryの追跡解除とステージ復元、skip-worktreeの設定・解除も確認済みです。
テスト用ファイルの内容は保持されましたが、Unityの起動・シーン保存・別PCでの復元は検証していません。
環境設定の記事は、ほかにもあります。




関連:Unityの使い方まとめ。
