Unityの.gitignoreは、GitHubが公式に配布しているテンプレート「Unity.gitignore」を、Assets・Packages・ProjectSettingsと同じ階層に置くのが基本です。
Library・Temp・Logs・UserSettingsなどの自動で作られるフォルダーを除外し、Assets・Packages・ProjectSettingsと.metaファイルはコミットします。
大きい画像や3Dモデルは.gitignoreではなくGit LFSで扱い、シーンやプレハブの衝突はForce TextとUnityYAMLMerge(Smart Merge)で減らします。
この記事では、公式テンプレートの中身と置き場所、残すフォルダーと除外するフォルダー、Unity側の設定、Git LFS、シーンの衝突の避け方、すでにコミットしたLibraryの外し方を、GitHub・Unity・Gitの公式ドキュメントをもとにまとめました。
Unityの.gitignoreはGitHub公式のテンプレートを使う
GitHubは、言語や環境ごとに推奨する.gitignoreの公式の一覧を、github/gitignoreというリポジトリで公開しています(GitHub Docs:ファイルを無視する)。
Unity用はUnity.gitignoreで、2026年11月1日に確かめた時点の最終更新は2026年9月4日(クラッシュ時の復元ファイルの除外を追加)です。
テンプレートの先頭には、Unityプロジェクトのルートに置くように書かれています。
下が2026年11月1日時点の全文です。
ファイル名は拡張子のない「.gitignore」にして、Assetsフォルダーと同じ階層に保存してください。
# This .gitignore file should be placed at the root of your Unity project directory
#
# Get latest from https://github.com/github/gitignore/blob/main/Unity.gitignore
#
# Recommended: add any editor/OS/tool-specific ignore rules from the Global/ templates as needed.
# See: https://github.com/github/gitignore/tree/main/Global
#
.utmp/
/[Ll]ibrary/
/[Tt]emp/
/[Oo]bj/
/[Bb]uild/
/[Bb]uilds/
/[Ll]ogs/
/[Uu]ser[Ss]ettings/
*.log
# Memory Profiler generated files
# MemoryCaptures can get excessive in size
# They also could contain extremely sensitive data
/[Mm]emory[Cc]aptures/
# Recordings can get excessive in size
/[Rr]ecordings/
# Uncomment this line if you wish to ignore the asset store tools plugin
# /[Aa]ssets/AssetStoreTools*
# Autogenerated Jetbrains Rider plugin
/[Aa]ssets/Plugins/Editor/JetBrains*
# Jetbrains Rider personal-layer settings
*.DotSettings.user
# Visual Studio cache directory
.vs/
# Gradle cache directory
.gradle/
# Autogenerated VS/MD/Consulo solution and project files
ExportedObj/
.consulo/
*.csproj
*.unityproj
*.sln
*.slnx
*.suo
*.tmp
*.user
*.userprefs
*.pidb
*.booproj
*.svd
*.pdb
*.mdb
*.opendb
*.VC.db
# Unity3D generated meta files
*.pidb.meta
*.pdb.meta
*.mdb.meta
# Unity3D generated file on crash reports
sysinfo.txt
# Mono auto generated files
.dirstamp
mono_crash.*
tmpinst-dir.stamp
# Builds
/*_BackUpThisFolder_ButDontShipItWithYourGame/
/*_BurstDebugInformation_DoNotShip/
*.apk
*.aab
*.obb
*.unitypackage
*.unitypackage.meta
*.app
# Crashlytics generated file
crashlytics-build.properties
# Blender generated backup files
/[Aa]ssets/**/*.blend1
/[Aa]ssets/**/*.blend1.meta
# TouchDesigner generated cache files
/[Aa]ssets/**/TDImportCache/
/[Aa]ssets/**/TDImportCache.meta
# Unity Crash Recovery generated files
/[Aa]ssets/_Recovery/
/[Aa]ssets/_Recovery.meta
# Addressables default ignores, before user customizations
# By default, Addressables content builds will generate addressables_content_state.bin
# files in platform-specific subfolders, for example:
# /Assets/AddressableAssetsData/OSX/addressables_content_state.bin
/[Aa]ssets/AddressableAssetsData/*/addressables_content_state.bin
/[Aa]ssets/AddressableAssetsData/*/addressables_content_state.bin.meta
/[Aa]ssets/AddressableAssetsData/link.xml
/[Aa]ssets/AddressableAssetsData/link.xml.meta
/[Aa]ssets/Addressables_Temp/
/[Aa]ssets/Addressables_Temp.meta
/[Aa]ssets/StreamingAssets/aa/
/[Aa]ssets/StreamingAssets/aa.meta
/ServerData/
# EDM4U generated files
/[Aa]ssets/GeneratedLocalRepo/
/[Aa]ssets/GeneratedLocalRepo.meta
# Android Gradle generated files
/[Aa]ssets/Plugins/Android/**/*.gradle.backup*
/[Aa]ssets/Plugins/Android/**/local.properties
# Test Framework generated files
/[Aa]ssets/Resources/PerformanceTestRunInfo.json
/[Aa]ssets/Resources/PerformanceTestRunInfo.json.meta
/[Aa]ssets/Resources/PerformanceTestRunSettings.json
/[Aa]ssets/Resources/PerformanceTestRunSettings.json.meta
/[Aa]ssets/InitTestScene*.unity
/[Aa]ssets/InitTestScene*.unity.meta
# Visual Scripting auto-generated files
/[Aa]ssets/Unity.VisualScripting.Generated/VisualScripting.Core/Property Providers/
/[Aa]ssets/Unity.VisualScripting.Generated/VisualScripting.Core/Property Providers.meta
/[Aa]ssets/Unity.VisualScripting.Generated/VisualScripting.Flow/UnitOptions.db
/[Aa]ssets/Unity.VisualScripting.Generated/VisualScripting.Flow/UnitOptions.db.meta
# UI Toolkit auto generated files
/UIElementsSchema/
# Auto-generated cache in Assets folder
/[Aa]ssets/[Ss]ceneDependencyCache*
最新の内容は、コピーする前にGitHubのUnity.gitignoreで確かめてください。
リポジトリの中のサブフォルダーにUnityプロジェクトがある場合
テンプレートの行の多くは「/[Ll]ibrary/」のように先頭に「/」が付いています。
先頭の「/」は、その.gitignoreがある階層を基準にするという意味です(Git:gitignore)。
リポジトリのルートとUnityプロジェクトのルートが違うときは、.gitignoreをUnityプロジェクトのフォルダー(Assetsがある階層)に置きます。
コミットするフォルダーと除外するフォルダー
| フォルダー・ファイル | 扱い | 理由 |
|---|---|---|
| Assets | コミットする | スクリプト・画像・モデル・シーンなど、プロジェクトの素材が入る |
| Packages | コミットする | 使うパッケージを決める manifest.json が入る |
| ProjectSettings | コミットする | ビルド・グラフィックス・入力・タグなどのプロジェクト設定が入る |
| .meta(Assetsの中) | コミットする | 素材と組で動く。失うとその素材への参照が切れる |
| Library | 除外する | 読み込んだ素材のキャッシュで、PCごとに作られる |
| Temp | 除外する | Unityを閉じるたびに消える一時データ |
| UserSettings | 除外する | 個人のレイアウトや設定。共有すると他の人の設定を上書きする |
| Logs・obj・Build・Builds | 除外する(テンプレートの指定) | ログ・中間ファイル・ビルドの出力 |
| *.csproj・*.sln | 除外する(テンプレートの指定) | エディターが自動で作るプロジェクトファイル |
Library・Temp・UserSettingsを除外する理由と各フォルダーの中身は、Unity マニュアル:既定のプロジェクトフォルダーの説明に合わせています。
.metaについては、Unity マニュアル:アセットのメタデータに、素材が.metaを失うとその素材への参照が切れると書かれています。
そのため、「*.meta」を丸ごと除外してはいけません。
テンプレートが除外している「*.pdb.meta」などは、自動で作られる一部のファイルの.metaだけです。
Libraryフォルダーの扱いはLibraryフォルダーの再生成でも解説しています。
Unity側の設定:Visible Meta FilesとForce Text
Gitで管理する前に、Unityの2つの設定を確かめます。
どちらもUnity 6.3のマニュアルでは初期値ですが、古いプロジェクトでは変わっていることがあります。
| 設定 | 場所 | Gitで使うときの値 |
|---|---|---|
| Version Control の Mode | Edit > Project Settings > Version Control | Visible Meta Files(初期値) |
| Asset Serialization の Mode | Edit > Project Settings > Editor | Force Text(初期値) |
Visible Meta Filesは、Unityが直接連携していないバージョン管理(Gitなど)で素材と.metaを管理するための設定です(Unity マニュアル:Version Control の設定)。
Force Textは、新しい素材も含めてすべての素材を文字(テキスト)の形式で保存する設定です(Unity マニュアル:Editor の設定)。
シーンやプレハブがテキストで保存されるので、Gitで差分を見たり、後で説明するUnityYAMLMergeで結合したりできます。
大きいファイルはGit LFSで管理する
.gitignoreは「管理しないファイル」を決めるもので、大きい素材を軽くする仕組みではありません。
PSDやFBX、音声などの大きいファイルをコミットするなら、Git LFSを使います。
Git LFSの公式サイトの手順は、ユーザーごとに1回「git lfs install」を実行し、リポジトリごとに管理する拡張子を「git lfs track」で登録して、.gitattributesをコミットする流れです。
git lfs install
git lfs track "*.psd"
git add .gitattributes拡張子を登録しても、すでに過去のコミットに入っているファイルはLFSに移りません。
過去の分を移すには「git lfs migrate」を使うと、同じ公式サイトに書かれています。
Unityで登録する拡張子の例や、.metaをLFSに入れない理由、すでにコミットしたファイルの移し方はUnityのGit LFSの設定にまとめました。
シーン・プレハブの衝突を減らす(Smart Merge/UnityYAMLMerge)
同じシーンやプレハブを2人が別々に直すと、Gitの通常の結合ではうまくまとまらないことがあります。
UnityYAMLMergeは、Unityのエディターに付いている結合用のコマンドラインツールです。
シーン(.unity)・プレハブ(.prefab)・.metaを、中身の意味に沿って結合します(Unity マニュアル:Smart Merge)。
.assetや.mat、.controllerなどほかのYAMLの素材は、「--force」を付けない限り結合の対象になりません。
UnityYAMLMergeの場所
| OS | 場所(Unity Hubの標準の入れ方の場合) |
|---|---|
| Windows | C:\Program Files\Unity\Hub\Editor\<版>\Editor\Data\Tools\UnityYAMLMerge.exe |
| macOS | /Applications/Unity/Hub/Editor/<版>/Unity.app/Contents/Helpers/UnityYAMLMerge |
| Linux | ~/Unity/Hub/Editor/<版>/Editor/Data/Tools/UnityYAMLMerge |
<版>の部分は、Unity Hubに表示されるエディターの版の番号(Unity 6.3なら6000.3で始まる番号)です。
Gitに登録する
Unityのマニュアルでは、次の設定をリポジトリの.git/configに、すべてのリポジトリで使うならホームフォルダーの.gitconfigに書くよう案内しています。
[merge]
tool = unityyamlmerge
[mergetool "unityyamlmerge"]
trustExitCode = false
cmd = '<path to UnityYAMLMerge>' merge -p "$BASE" "$REMOTE" "$LOCAL" "$MERGED"<path to UnityYAMLMerge>を、上の表の場所に置き換えます。
結合で衝突が起きたら「git mergetool」を実行すると、UnityYAMLMergeが呼ばれます。
UnityYAMLMergeでも解けない衝突は、mergespecfile.txtに書かれた別の結合ツールに渡されます。
Project Settingsの「Smart merge」の項目は、Version ControlのModeをPerforceにしたときだけ表示される設定で、Gitで使うときは上の設定ファイルで指定します。
衝突そのものを減らす分け方
大きな1つのシーンを全員で直すほど、衝突は起きやすくなります。
部品をプレハブに分ける、作業する人ごとにシーンを分けるなど、同じファイルを同時に直す場面を減らすと、結合の手間も減ります。
除外結果を確認してからコミットする
以下はプロジェクトのルートで実行する、コマンドプロンプト用の例です。
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"
このコマンドはルールの確認だけを行い、追跡を解除する操作ではありません。
表示された行では、ルールの出典ファイルとパターンを読みます。
自分の設定に!で始まる例外がある場合、その一致行は除外しない指定です。
出力があることだけで、除外対象だと判断しないでください。
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や切り替えを続けず、変更内容を別途保存してから通常の管理へ戻します。
すでにコミットしたLibraryを管理から外す
.gitignoreに書いても、すでにGitで管理しているファイルは除外されません(Git:gitignore)。
先に追跡を外してから、.gitignoreのルールを効かせます(GitHub Docs)。
git rm -r --cached Library
git add .gitignore
git commit -m "Stop tracking Library"「--cached」を付けると、Gitの管理からだけ外れ、手元のLibraryフォルダーは残ります。
Temp・Logs・UserSettingsなど、ほかに追跡してしまったフォルダーがあれば同じように外します。
この記事の手順を確かめた範囲
シーンやプレハブを文字の差分として扱う場合は、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の使い方まとめ。
つまずきやすい所と対処
| つまずき | 起きること | 対処 |
|---|---|---|
| *.metaを除外した | 別のPCで素材の参照が切れる | .metaは素材と一緒にコミットする |
| .gitignoreをリポジトリのルートに置いたが、Unityはサブフォルダーにある | 「/」付きのルールが効かずLibraryが入る | .gitignoreをAssetsと同じ階層に置く |
| Libraryをコミットした後で.gitignoreを足した | Libraryの変更がずっと出続ける | git rm -r --cached Library で追跡を外す |
| Asset SerializationがForce Binary・Mixedのまま | シーンの差分が読めず、結合もできない | Edit > Project Settings > Editor で Force Text にする |
| 大きいPSDやFBXを普通にコミットした | リポジトリが重くなる | Git LFSで拡張子を登録する。過去の分は git lfs migrate |
| Project SettingsにSmart mergeの項目が無い | Gitで使う設定が見つからない | Perforce用の項目なので、.gitconfigにUnityYAMLMergeを登録する |
よくある質問:Unityの.gitignore
.gitignoreはどこに置きますか?
Assets・Packages・ProjectSettingsと同じ階層(Unityプロジェクトのルート)に置きます。
リポジトリのルートと違う場合も、Unityプロジェクト側に置きます。
.metaファイルは除外してもいいですか?
除外しません。
.metaを失うと、その素材への参照が切れます。
Packagesフォルダーはコミットしますか?
コミットします。
使うパッケージを決めるmanifest.jsonが入っています。
テンプレートは自分で書き換えてもいいですか?
書き換えて構いません。
Asset Store Toolsを除外する行のように、テンプレートの中にも必要に応じてコメントを外す行があります。
Unity Version Controlを使う場合も必要ですか?
.gitignoreはGit用のファイルなので、Gitを使わないなら不要です。
まとめ
Unityの.gitignoreは、GitHub公式のUnity.gitignoreをAssetsと同じ階層に置けば、LibraryやTempなどの生成物を除外できます。
Assets・Packages・ProjectSettingsと.metaはコミットし、Unity側はVisible Meta FilesとForce Textにしておきます。
大きい素材はGit LFS、シーンやプレハブの衝突はUnityYAMLMergeで扱ってください。
Unityの設定やエラーの記事はUnityの使い方まとめから探せます。
