サーチ…


UnityでのGit大容量ファイルストレージ(LFS)の使用

序文

Gitは、そのままの状態でビデオゲームを開発することができます。しかし、主な注意点は、コミット履歴が肥大化するにつれ、大きなバージョン(> 5 MB)のメディアファイルを長期間に渡って問題にすることができることです。Gitはバイナリファイルのバージョン管理用に作られたものではありません。

素晴らしいニュースは、2015年中頃からGitHubがこの問題を直接扱うGit LFSというプラグインをリリースしたことです。大規模なバイナリファイルを簡単かつ効率的にバージョンアップできるようになりました。

最後に、このドキュメントは、あなたのGitの生活がビデオゲームの開発に適していることを確実にするために必要な特定の要件と情報に焦点を当てています。このガイドでは、Git自体の使い方については触れません。

Git&Git-LFSのインストール

あなたは開発者として利用できるいくつかのオプションがあります。最初の選択肢は、コアのGitコマンドラインをインストールするか、一般的なGit GUIアプリケーションのどれかを扱うかどうかです。

オプション1:Git GUIアプリケーションを使用する

これは実際には個人的な好みです.GitのGUIやGUIを使うかどうかという点でかなりのオプションがあるからです。あなたはいくつかのアプリケーションを選択できますが、ここでは3つのアプリケーションがあります:

選択したアプリケーションをインストールしたら、googleを実行し、Git-LFSの設定方法を確認してください。このガイドでは、アプリケーションごとにこのステップを省略します。

オプション2:Git&Git-LFSをインストールする

これはかなり単純です - Gitをインストールしてください 。その後、 Git LFSをインストールします

プロジェクトにGit大容量ファイルストレージを設定する

Git LFSプラグインを使用してバイナリファイルをより良くサポートしている場合は、Git LFSによって管理されるいくつかのファイルタイプを設定する必要があります。リポジトリのルートにある.gitattributesファイルに以下を追加して、Unityプロジェクトで使用される一般的なバイナリファイルをサポートします。

# Image formats:
*.tga filter=lfs diff=lfs merge=lfs -text
*.png filter=lfs diff=lfs merge=lfs -text
*.tif filter=lfs diff=lfs merge=lfs -text
*.jpg filter=lfs diff=lfs merge=lfs -text
*.gif filter=lfs diff=lfs merge=lfs -text
*.psd filter=lfs diff=lfs merge=lfs -text

# Audio formats:
*.mp3 filter=lfs diff=lfs merge=lfs -text
*.wav filter=lfs diff=lfs merge=lfs -text
*.aiff filter=lfs diff=lfs merge=lfs -text

# 3D model formats:
*.fbx filter=lfs diff=lfs merge=lfs -text
*.obj filter=lfs diff=lfs merge=lfs -text

# Unity formats:
*.sbsar filter=lfs diff=lfs merge=lfs -text
*.unity filter=lfs diff=lfs merge=lfs -text

# Other binary formats
*.dll filter=lfs diff=lfs merge=lfs -text

Unity用のGitリポジトリを設定する

Unity開発用のGitリポジトリを初期化するときには、実行する必要があるいくつかのことがあります。

ユニティフォルダを無視する

すべてがリポジトリでバージョン管理されるべきではありません。以下のテンプレートをリポジトリのルートにある.gitignoreファイルに追加することができます。あるいは、 GitHubのオープンソースのUnity.Gitignoreをチェックしてgitignore.ioを使ってUnityを生成することもできます

# Unity Generated
[Tt]emp/
[Ll]ibrary/
[Oo]bj/

# Unity3D Generated File On Crash Reports
sysinfo.txt

# Visual Studio / MonoDevelop Generated
ExportedObj/
obj/
*.csproj
*.unityproj
*.sln
*.suo
*.tmp
*.user
*.userprefs
*.pidb
*.booproj
*.svd

# OS Generated
desktop.ini
.DS_Store
.DS_Store?
.Spotlight-V100
.Trashes
ehthumbs.db
Thumbs.db

.gitignoreファイルの設定方法の詳細については、 こちらをご覧ください

Unityプロジェクトの設定

デフォルトでは、Unityプロジェクトはバージョン管理を正しくサポートするように設定されていません。

  1. (v4.5以降の手順を省略してください) Unity → Preferences → Packages → Repository Externalオプションを有効にしてください。
  2. Edit → Project Settings → Editor → Version Control Modeで、 Visible Meta Filesに切り替えEdit → Project Settings → Editor → Version Control Mode
  3. Edit → Project Settings → Editor → Asset Serialization Mode Force Textに切り替えEdit → Project Settings → Editor → Asset Serialization Mode
  4. Fileメニューからシーンとプロジェクトを保存します。

追加設定

UnityプロジェクトでGitを使用する際のいくつかの重大な悩みの一つは、Gitはディレクトリを気にせず、ファイルを削除して空のディレクトリを残しておくことです。 Unityはこれらのディレクトリに*.metaファイルを作成し、Gitがこれらのメタファイルを追加したり削除したりすると、チームメンバー間で少し戦闘を引き起こす可能性があります。

このGitのpost-mergeフックを、Unityプロジェクトがあるリポジトリの/.git/hooks/フォルダに追加します。 Gitをpull / mergeした後、どのファイルが削除されたかを調べ、存在していたディレクトリが空であるかどうかを確認し、存在する場合は削除します。

マージするシーンとプレハブ

Unityを使って作業するときの共通の問題は、2人以上の開発者がUnityシーンまたはプリファブ(* .unityファイル)を変更していることです。 Gitはそれらをボックスから正しくマージする方法を知らない。ありがたいことに、UnityチームはSmartMergeというツールを配備しました。これは簡単なマージを自動的に行います。最初に行うことは、 .gitまたは.gitconfigファイルに次の行を追加することです(Windows: %USERPROFILE%\.gitconfig 、Linux / Mac OS X: ~/.gitconfig

[merge]
tool = unityyamlmerge

[mergetool "unityyamlmerge"]
trustExitCode = false
cmd = '<path to UnityYAMLMerge>' merge -p "$BASE" "$REMOTE" "$LOCAL" "$MERGED"

Windowsでは 、UnityYAMLMergeのパスは次のとおりです。

C:\Program Files\Unity\Editor\Data\Tools\UnityYAMLMerge.exe

または

C:\Program Files (x86)\Unity\Editor\Data\Tools\UnityYAMLMerge.exe

MacOSXでは

/Applications/Unity/Unity.app/Contents/Tools/UnityYAMLMerge

これが完了すると、マージ/リベース中に競合が発生した場合に、マージツールが利用可能になります。 git mergetool手動で実行してUnityYAMLMergeを起動することを忘れないでください。



Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow