Unity Git setup
チーム開発用に Unity project を Git へ設定する
Unity repository をチームで安全に使うには、serialization、meta file、text merge、大容量 binary、locking を別々に設計する必要があります。最初の本番 conflict が起きる前に、再現可能な基準を作ります。
最初に Unity の基準を固定する
- Editor Settings > Asset Serialization を Force Text にする。
- Version Control で Visible Meta Files を有効にする。
Assets/、Packages/、ProjectSettings/を version control に含める。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
- 作業開始前に pull し、LFS lock を確認する。
- 小さく目的が明確な commit を作る。
- Push 前に scene / prefab の変更を意味ベースで review する。
- Base/Ours/Theirs で conflict を解決し、Unity で開いて Console を確認する。
- 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 の設定ミスを本番前に発見できます。