Unity Git setup

チーム開発用に Unity project を Git へ設定する

Unity repository をチームで安全に使うには、serialization、meta file、text merge、大容量 binary、locking を別々に設計する必要があります。最初の本番 conflict が起きる前に、再現可能な基準を作ります。

7 Wolves 2026年7月29日 10分で読めます Git 設定

最初に Unity の基準を固定する

  1. Editor Settings > Asset SerializationForce Text にする。
  2. Version Control で Visible Meta Files を有効にする。
  3. Assets/Packages/ProjectSettings/ を version control に含める。
  4. Library/Temp/Logs/、local build output を除外する。

Asset を移動するときは対応する .meta も同じ commit で移動します。Meta を失うと GUID が変わり、reference が切れる可能性があります。

.gitattributes で text merge と binary storage を分ける

*.unity  text
*.prefab text
*.asset  text
*.mat    text

*.psd  filter=lfs diff=lfs merge=lfs -text
*.fbx  filter=lfs diff=lfs merge=lfs -text
*.wav  filter=lfs diff=lfs merge=lfs -text
*.mp4  filter=lfs diff=lfs merge=lfs -text

Text serialized asset を diff / merge したい場合、.unity.prefab を一律に LFS binary にしないでください。Smart Merge や mergetool の rule は別に設定します。

Git LFS を選択的に使う

Git LFS は PSD、FBX、audio、video、大きな texture など、text diff に向かない大容量ファイルに使います。全 developer と CI runner に LFS があるか、hosting が lock を支えるか、既存 binary history をどう移行するかを事前に確認します。

拡張子だけで決めず、実際のサイズ、変更頻度、merge 可能性で rule を決めてください。

Smart Merge に semantic review を追加する

UnityYAMLMerge は text serialized scene と prefab を自動 merge できます。ただし hierarchy、reference、prefab override が変わる場合は結果の確認が必要です。MergeSight の Git 向け Unity review は Base/Ours/Theirs を Unity structure として表示し、危険な結果を書き込む前に確認できます。

Official な git mergetool workflow と独自の merge driver のどちらを使うかを文書化してください。両方とも可能ですが、同じ Git 設定ではありません。

必要な asset だけを lock する

Lock は大きな binary source や、並行編集のコストが高い少数の asset に適しています。すべての text serialized scene / prefab を lock すると、有効な並行作業まで妨げます。Additive scene、prefab ownership、明確な引き継ぎと組み合わせてください。

日常の team workflow

  1. 作業開始前に pull し、LFS lock を確認する。
  2. 小さく目的が明確な commit を作る。
  3. Push 前に scene / prefab の変更を意味ベースで review する。
  4. Base/Ours/Theirs で conflict を解決し、Unity で開いて Console を確認する。
  5. CI で conflict marker、missing meta、broken reference、asset import を検証する。

意図的な conflict で設定を検証する

git check-ignore -v Library/
git check-attr -a -- Assets/Scenes/Main.unity
git lfs track
git status

その後、2つの test branch で同じ scene の別 object を変更します。Merge invocation、review、backup、Unity import、CI を確認してからチーム標準にしてください。

よくある質問

Unity のどの folder を Git に入れますか?

通常は Assets、Packages、ProjectSettings を version control に含めます。Library、Temp、Logs、Obj、local build や IDE output は生成物なので .gitignore に入れます。

.unity と .prefab は Git LFS に入れるべきですか?

一律には入れません。Force Text なら text serialized で、Unity-aware tool による diff / merge が可能です。LFS は主に大容量 binary source に使い、必要な high-risk asset だけ lock を検討します。

Unity project に UnityYAMLMerge は必要ですか?

Scene と prefab を並行編集するチームには有用な Smart Merge baseline です。ただし重要な構造や reference の変更は、生成結果の review と validation が必要です。

.gitattributes が有効か確認する方法は?

git check-attr で具体的なファイルの attribute を確認できます。Attribute だけで mergetool や driver の実行までは保証されないため、実際の test conflict も行ってください。

まとめ

Text と binary を分ける

Force Text は Unity asset の diff を保ち、LFS は大容量 binary を担当します。

Meta file も asset の一部

Asset と .meta は一緒に移動、commit、review します。

実際に conflict を起こして試す

Attributes、mergetool、LFS、CI の設定ミスを本番前に発見できます。