171
146

More than 5 years have passed since last update.

UnityプロジェクトをGitで管理

Last updated at Posted at 2018-06-24

前提

  • Bitbucket使用
  • SourceTree使用

1. Unityプロジェクト作成と初期設定

適当な場所にUnityプロジェクトを作成しUnity Editorで開く。
Edit > Project Settings > Editor を選択し、以下項目を設定して保存する。

EditorSettings

  • 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にテンプレートがあるので拝借。

Unity.gitignore

$ 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

GitLFS

おわり

171
146
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
171
146