前提
- Bitbucket使用
- SourceTree使用
1. Unityプロジェクト作成と初期設定
適当な場所にUnityプロジェクトを作成しUnity Editorで開く。
Edit > Project Settings > Editor を選択し、以下項目を設定して保存する。
-
Version Control - Mode : Visible Meta Files
metaファイルはAssetフォルダ内の全てのアセットに対してUnityで必要な管理情報が記載されるファイルで、metaファイルを表示させることでUnity外部のバージョン管理システムを有効化する。 -
Asset Serialization : Force Text
全てのアセットをテキスト形式に変換することで、SceneやPrefabなどのバイナリフォーマットのファイルをテキストで見ることでできるので、バージョン管理し易くなる。
2. Unityプロジェクトでローカルリポジトリ作成
初期設定が完了したUnityプロジェクトでローカルリポジトリを作成する。
この時リモートリポジトリは作成しない。
変更ファイルが800以上ある...?
3. 無視リストを設定
800以上あるファイルのうちバージョン管理が必要なのは以下ディレクトリ配下のファイルのみ。
- Assets
- ProjectSettings
- UnityPackageManager
それ以外はgitignoreに設定して管理対象外とする。
GitHubにテンプレートがあるので拝借。
$ curl -o .gitignore https://raw.githubusercontent.com/github/gitignore/master/Unity.gitignore
中身はこんな感じ
$ cat .gitignore
[Ll]ibrary/
[Tt]emp/
[Oo]bj/
[Bb]uild/
[Bb]uilds/
Assets/AssetStoreTools*
# Visual Studio cache directory
.vs/
# Autogenerated VS/MD/Consulo solution and project files
ExportedObj/
.consulo/
*.csproj
*.unityproj
*.sln
*.suo
*.tmp
*.user
*.userprefs
*.pidb
*.booproj
*.svd
*.pdb
*.opendb
# Unity3D generated meta files
*.pidb.meta
*.pdb.meta
# Unity3D Generated File On Crash Reports
sysinfo.txt
# Builds
*.apk
*.unitypackage
かなり減った
4. Git LFS トラック対象ファイル設定
画像や音声ファイルなどのバイナリデータはファイルサイズが大きくなりがちなのでGit LFSトラック対象とする。
またまた以下を拝借。
.gitattributes for Unity3D with git-lfs
$ curl -o .gitattributes https://gist.githubusercontent.com/nemotoo/b8a1c3a0f1225bb9231979f389fd4f3f/raw/15f60a55a50b5c058de5e14369051ed268db0c77/.gitattributes
中身はこんな感じ
$ cat .gitattributes
## Unity ##
*.cs diff=csharp text
*.cginc text
*.shader text
*.mat merge=unityyamlmerge eol=lf
*.anim merge=unityyamlmerge eol=lf
*.unity merge=unityyamlmerge eol=lf
*.prefab merge=unityyamlmerge eol=lf
*.physicsMaterial2D merge=unityyamlmerge eol=lf
*.physicsMaterial merge=unityyamlmerge eol=lf
*.asset merge=unityyamlmerge eol=lf
*.meta merge=unityyamlmerge eol=lf
*.controller merge=unityyamlmerge eol=lf
## git-lfs ##
#Image
*.jpg filter=lfs diff=lfs merge=lfs -text
*.jpeg filter=lfs diff=lfs merge=lfs -text
*.png filter=lfs diff=lfs merge=lfs -text
*.gif filter=lfs diff=lfs merge=lfs -text
*.psd filter=lfs diff=lfs merge=lfs -text
*.ai filter=lfs diff=lfs merge=lfs -text
#Audio
*.mp3 filter=lfs diff=lfs merge=lfs -text
*.wav filter=lfs diff=lfs merge=lfs -text
*.ogg filter=lfs diff=lfs merge=lfs -text
#Video
*.mp4 filter=lfs diff=lfs merge=lfs -text
*.mov filter=lfs diff=lfs merge=lfs -text
#3D Object
*.FBX filter=lfs diff=lfs merge=lfs -text
*.fbx filter=lfs diff=lfs merge=lfs -text
*.blend filter=lfs diff=lfs merge=lfs -text
*.obj filter=lfs diff=lfs merge=lfs -text
#ETC
*.a filter=lfs diff=lfs merge=lfs -text
*.exr filter=lfs diff=lfs merge=lfs -text
*.tga filter=lfs diff=lfs merge=lfs -text
*.pdf filter=lfs diff=lfs merge=lfs -text
*.zip filter=lfs diff=lfs merge=lfs -text
*.dll filter=lfs diff=lfs merge=lfs -text
*.unitypackage filter=lfs diff=lfs merge=lfs -text
*.aif filter=lfs diff=lfs merge=lfs -text
*.ttf filter=lfs diff=lfs merge=lfs -text
*.rns filter=lfs diff=lfs merge=lfs -text
*.reason filter=lfs diff=lfs merge=lfs -text
*.lxo filter=lfs diff=lfs merge=lfs -text
あとは適当な画像を入れてcommitし、リモートリポジトリを作成してpush
Bitbucket側の設定でGit LFSにpushしたファイルが表示されていればOK
おわり