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も必要なソースです。
すでに追跡した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。
環境設定の記事は、ほかにもあります。




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