Unityプロジェクトをgit flowで管理する方法

git

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-scenefeature/refactor-audio-system
  • 完了後、developにマージ。
  • 複数人で作業する場合はPull Requestベースでレビュー推奨。

4. release/〇〇

  • リリース前に切り出し、テストやバランス調整を行う。
  • 例:release/v1.1.0
  • 本番に出す前の最終調整に使う。
  • リリース後、maindevelopにマージ。

5. hotfix/〇〇

  • 緊急時(バグなど)にmainから切って即時修正。
  • 例:hotfix/fix-startup-crash
  • 修正後はmaindevelopにマージ。

実際の流れ

新機能を開発する場合

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の特性を理解して、効率の良い開発体制を整えましょう!

コメント

タイトルとURLをコピーしました