Unityをgitで管理するときにいろいろな問題が生じたので注意する点とgit flowで運用する方法についてまとめました。
Git Flowとは?
Git Flow
は、Vincent Driessen氏が提唱したブランチ戦略のベストプラクティスです。以下のブランチを使い分けて開発を進めます。
main
:常に安定したリリース版develop
:次のリリースに向けた統合ブランチfeature/*
:新機能の開発用release/*
:リリース準備hotfix/*
:緊急修正
Unityプロジェクトでの注意点
Unityならではの注意点もあります。
.gitignoreの設定
.gitignore
に以下を必ず含めましょう。
# ===== Unity Generated Files =====
[Ll]ibrary/
[Tt]emp/
[Oo]bj/
[Bb]uild/
[Bb]uilds/
[Ll]ogs/
[Mm]emoryCaptures/
# ===== Asset meta data =====
*.pidb
*.booproj
*.suo
*.user
*.userprefs
*.unityproj
*.dll
*.exe
*.pdf
*.mid
*.midi
*.backup
*.lck
*.cache
*.bak
*.tmp
*.svd
*.pdb
# ===== OS・IDEのゴミファイル =====
.DS_Store
*.swp
*.sln
*.sln.*
*.csproj
*.csproj.*
*.vcxproj
*.vcxproj.*
*.tmproj
*.pyc
# ===== Visual Studio / JetBrains Rider =====
.vscode/
.idea/
*.code-workspace
# ===== Unity Cloud Build =====
.cloud/
# ===== Autogenerated / Non-shareable =====
sysinfo.txt
*.apk
*.aab
*.xcworkspace/
*.xcuserdata/
*.xcodeproj/project.xcworkspace/
*.xcodeproj/xcuserdata/
# ===== Unity Collab Cache =====
.collab/
# ===== Unity Addressables Cache =====
Assets/AddressableAssetsData/*/AssetGroups/*_BuildPath.asset
Assets/AddressableAssetsData/*/AssetGroups/*_LoadPath.asset
Assets/AddressableAssetsData/*/AssetGroups/*_Link.xml
# ===== Unity Shader Cache =====
Assets/ShaderCache/
# ===== Crash / Debug Files =====
*.dmp
*.crash
# ===== Local Project Settings (do not share) =====
ProjectSettings/EditorBuildSettings.asset
ProjectSettings/EditorSettings.asset
ProjectSettings/GraphicsSettings.asset
ProjectSettings/QualitySettings.asset
ProjectSettings/TagManager.asset
ProjectSettings/ProjectSettings.asset
ProjectSettings/ProjectVersion.txt
メタファイル(.meta)の管理
.meta
ファイルは必ず一緒に管理してください。- これはUnityのアセットリンクに不可欠です。
Unityでの大容量アセット管理:Git LFS
Unityプロジェクトでは、.psd
や .fbx
、.wav
、.mp4
などの大容量ファイルを多く扱います。
これらを通常のGitで管理すると、リポジトリが肥大化してしまい、クローンやプッシュが重くなります。
人によって必要でないなら飛ばしてもらって大丈夫です。
Git LFSとは?
Git LFSは、大きなファイルをGitの管理対象から切り離し、LFS専用のストレージに保存する仕組みです。
- Git本体には「ポインタ(参照情報)」だけが保存される
- LFS対象ファイルはLFSサーバーに保存される
- Gitの履歴を軽量化でき、クローンも高速
Git LFSの導入
1、 Git LFSのインストール
ターミナル(またはGit Bash)で以下を実行:
git lfs install
2、 .gitattributesファイルの追加
.gitattributes
ファイルは、Gitの動作(改行コード、マージ、フィルタ、Git LFS など)をファイルごと・拡張子ごとに設定するための特殊なファイルです。
# Unity assets
*.psd filter=lfs diff=lfs merge=lfs -text
*.png filter=lfs diff=lfs merge=lfs -text
*.jpg filter=lfs diff=lfs merge=lfs -text
*.jpeg filter=lfs diff=lfs merge=lfs -text
*.tga filter=lfs diff=lfs merge=lfs -text
*.gif filter=lfs diff=lfs merge=lfs -text
*.bmp filter=lfs diff=lfs merge=lfs -text
*.tif filter=lfs diff=lfs merge=lfs -text
*.tiff filter=lfs diff=lfs merge=lfs -text
# 3D models
*.fbx filter=lfs diff=lfs merge=lfs -text
*.obj filter=lfs diff=lfs merge=lfs -text
*.dae filter=lfs diff=lfs merge=lfs -text
*.3ds filter=lfs diff=lfs merge=lfs -text
*.blend 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
*.avi filter=lfs diff=lfs merge=lfs -text
# Unity specific binary assets
*.unity filter=lfs diff=lfs merge=lfs -text
*.prefab filter=lfs diff=lfs merge=lfs -text
*.mat filter=lfs diff=lfs merge=lfs -text
*.asset filter=lfs diff=lfs merge=lfs -text
*.controller filter=lfs diff=lfs merge=lfs -text
*.anim filter=lfs diff=lfs merge=lfs -text
*.physicMaterial filter=lfs diff=lfs merge=lfs -text
*.terrain filter=lfs diff=lfs merge=lfs -text
*.cubemap filter=lfs diff=lfs merge=lfs -text
*.renderTexture filter=lfs diff=lfs merge=lfs -text
.gitattributes
を変更した場合は、必ずGitに追加・コミットしましょう
git add .gitattributes
git commit -m ".gitattributesを追加"
ブランチ構成(Git Flowベース)
ブランチ名 | 用途 | 内容 |
---|---|---|
main | リリース用 | 本番に出す安定版。タグ付けしてバージョン管理します。 |
develop | 開発統合 | 各機能をマージする統合ブランチ。次期リリース候補。 |
feature/* | 機能追加 | 新機能や改善など、個別開発用ブランチ。 |
release/* | リリース調整 | リリース直前の調整用(バグ修正や最終チェック)。 |
hotfix/* | 緊急修正 | 本番環境での不具合を迅速に修正するためのブランチ。 |
ブランチの運用ルール
1. mainブランチ
- リリース版のみを保持。
- 原則、手動で直接コミットしない。
- バージョンはタグで管理
git tag v1.0.0
git push origin v1.0.0
2. developブランチ
- 開発中の最新状態を保持。
feature/*
やrelease/*
からのマージ先。- Unityエディタで開ける安定状態を保つことが望ましい。
3. feature/〇〇
- 新機能や改修ごとに作成。
- 命名例:
feature/add-title-scene
、feature/refactor-audio-system
- 完了後、
develop
にマージ。 - 複数人で作業する場合はPull Requestベースでレビュー推奨。
4. release/〇〇
- リリース前に切り出し、テストやバランス調整を行う。
- 例:
release/v1.1.0
- 本番に出す前の最終調整に使う。
- リリース後、
main
とdevelop
にマージ。
5. hotfix/〇〇
- 緊急時(バグなど)に
main
から切って即時修正。 - 例:
hotfix/fix-startup-crash
- 修正後は
main
とdevelop
にマージ。
実際の流れ
新機能を開発する場合
git checkout develop
git pull origin develop
git checkout -b feature/player
開発後
git add .
git commit -m "プレイヤーの移動"
git push origin feature/player
レビュー → develop
にマージ。
不具合の修正
git checkout main
git pull
git checkout -b hotfix/fix-build-error
リリース作業
git checkout develop
git pull
git checkout -b release/v1.2.0
最終確認後
git checkout main
git merge release/v1.2.0
git tag v1.2.0
git push origin main --tags
git checkout develop
git merge release/v1.2.0
よくあるトラブルと対策
チェックアウトできない(ローカル変更がある)
error: Your local changes would be overwritten by checkout
→ 対策:
git stash
git checkout ブランチ名
git stash pop
6. まとめ
Unityのチーム開発でGit Flowを導入することで
- ブランチの役割が明確になり
- 複数人での作業がしやすくなり
- バージョンのリリース管理もスムーズになります
Gitの使い方+Unityの特性を理解して、効率の良い開発体制を整えましょう!
コメント