Unityプロジェクトの.gitattributesとマージ設定
YAMLマージドライバー、バイナリアセット処理、シーンファイルの適切な設定を含むUnityゲーム開発用の.gitattributes設定方法。
Language-Specific
詳細な説明
UnityとGit
Unityプロジェクトは、Unityがシーンファイル、プレハブ、その他のアセットをYAMLとしてシリアライズするため、Gitでの取り扱いが難しいことで知られています。これらのファイルはテキストに見えますが、標準のマージアルゴリズムでは適切に処理できない構造を持っています。merge=unityyamlmergeドライバーと慎重な属性設定が不可欠です。
推奨設定
# 自動検出
* text=auto
# Unity YAMLファイル
*.unity merge=unityyamlmerge eol=lf
*.prefab merge=unityyamlmerge eol=lf
*.asset merge=unityyamlmerge eol=lf
*.meta merge=unityyamlmerge eol=lf
*.mat merge=unityyamlmerge eol=lf
*.anim merge=unityyamlmerge eol=lf
*.controller merge=unityyamlmerge eol=lf
*.overrideController merge=unityyamlmerge eol=lf
*.playable merge=unityyamlmerge eol=lf
*.mask merge=unityyamlmerge eol=lf
*.physicMaterial merge=unityyamlmerge eol=lf
*.physicsMaterial2D merge=unityyamlmerge eol=lf
*.lighting merge=unityyamlmerge eol=lf
# C#ソース
*.cs text diff=csharp
# シェーダー
*.shader text
*.cginc text
*.hlsl text
*.compute text
*.glsl text
# 設定
*.json text
*.xml text
*.yml text
*.yaml text
# バイナリアセット
*.png binary
*.jpg binary
*.jpeg binary
*.psd binary
*.tga binary
*.tiff binary
*.gif binary
*.bmp binary
*.fbx binary
*.obj binary
*.3ds binary
*.dae binary
*.blend binary
*.wav binary
*.mp3 binary
*.ogg binary
*.aiff binary
*.ttf binary
*.otf binary
*.dll binary
*.exe binary
*.so binary
*.dylib binary
*.unitypackage binary
UnityYAMLMergeのセットアップ
merge=unityyamlmerge属性を使用するには、UnityのマージツールをGitに設定する必要があります:
# .gitconfigまたは.git/configで
[merge "unityyamlmerge"]
name = Unity YAML Merge
driver = '/Applications/Unity/Unity.app/Contents/Tools/UnityYAMLMerge' merge -p %O %A %B %A
recursive = binary
Unityファイルにeol=lfを使う理由
Unityのバージョン管理統合はLF行末を期待しています。CRLFを使用すると、Unityが常にファイルを再シリアライズし、不要な変更とマージコンフリクトが発生します。すべてのUnity YAMLファイルにeol=lfを強制してください。
ユースケース
GitでUnityを使用するゲーム開発チームは、シーンの破損を防ぎ、適切なYAMLマージを有効にし、Unityプロジェクトに含まれる多くのバイナリアセットフォーマット(テクスチャ、モデル、オーディオ)を処理するためにこれらの属性を設定する必要があります。