Как использовать Git для управления версиями Unity3D?


каковы рекомендации по использованию Git управление версиями с Unity 3D, особенно при работе с бинарной природой проектов Unity 3D? Пожалуйста, опишите рабочий процесс, какие пути будут включены .gitignore, какие настройки должны быть установлены в Unity и / или проекте, и любые другие специальные вещи, которые следует отметить.

примечание: Я понимаю, что использование сервера активов-это рекомендуемый Unity способ, но я хотел бы использовать Git по разным причинам. Пожалуйста нет ответов, которые утверждают или утверждают, что я должен просто использовать сервер активов. Сервер активов действительно не вариант для меня.

13 413

13 ответов:

ниже приводится выдержка из мой личный блог .

использование Git с 3D-играми

Обновление Октября 2015: С тех пор GitHub выпустил плагин для Git под названием Git LFS это непосредственно связано с приведенной ниже проблемой. Теперь вы можете легко и эффективно версировать большие двоичные файлы!

Git может отлично работать с 3D-играми из коробки. Однако главным нюансом здесь является то, что версионирование большие (>5 Мб) медиафайлы могут быть проблемой в долгосрочной перспективе, поскольку ваша история фиксации раздувается. Мы решили эту потенциальную проблему в наши проекты только с версиями с бинарными активами, когда она является окончательной. Наши 3D художники используют Dropbox для работы на WIP активы, как по причине выше, так и потому, что это много быстрее и проще (не многие художники будут активно хотеть использовать Git!).

Git Workflow

Ваш Git рабочий процесс-это очень то, что вам нужно решить для себя, учитывая ваш собственный опыт работы в команде и то, как вы работаете вместе. Однако. Я бы настоятельно рекомендовал соответствующим названием Git Flow методология как описано оригинальным автором здесь.

Я не буду вдаваться в слишком большую глубину здесь о том, как работает методология, как автор описывает это прекрасно и в довольно немногих словах тоже, так что это легко пройти. Я использую с моей командой для некоторое время сейчас, и это лучший рабочий процесс, который мы пробовали до сих пор.

Git GUI Client Application

это действительно личное предпочтение здесь, так как есть довольно много вариантов с точки зрения Git GUI или использовать ли графический интерфейс вообще. Но я хотел бы предложить бесплатно приложение SourceTree по мере того как он затыкает внутри совершенно с расширением подачи Git. Читайте SourceTree учебник здесь о внедрении методологии git Flow в их приложение.

Unity3D Игнорировать Папки

для проверки актуальной версии Github поддерживал единство.gitignore file без специфики ОС.

# =============== #
# Unity generated #
# =============== #
Temp/
Library/

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

# ============ #
# OS generated #
# ============ #
.DS_Store
.DS_Store?
._*
.Spotlight-V100
.Trashes
ehthumbs.db
Thumbs.db

Настройки Unity3D

для версий Unity 3D v4. 3 и выше:

  1. (пропустите этот шаг в v4.5 и выше) включить на Unity → Preferences → Packages → Repository.
  2. открыть и выбрать Project Settings → Editor:
    1. Switch Version Control Mode to Visible Meta Files.
    2. Switch Asset Serialization Mode до Force Text.
  3. сохранить сцену и проект .

хотите перенести существующее РЕПО в LFS?

проверьте мой пост в блоге для шагов о том, как это сделать здесь.

Дополнительные Настройки

одна из немногих серьезных неприятностей, связанных с использованием Git с проектами Unity3D, заключается в том, что Git не заботится о каталогах и с радостью оставит пустые каталоги вокруг после удаления файлов из них. Unity3D сделает *.мета-файлы для этих каталогов и могут вызвать битву между членами команды, когда git commits продолжает добавлять и удалять эти мета-файлы.

добавить этот git после слияния крюк до /.git/hooks/ папка для репозиториев с проектами Unity3D в них. После любого git pull / merge он посмотрит, какие файлы были удалены, проверьте, существует ли каталог, в котором он существовал пустой, и если да, то удалите его.

в Unity 4.3 вы также должны были включить внешнюю опцию из настроек, но поскольку Unity 4.5 они отбросили опцию для этого, поэтому полный процесс настройки выглядит так:

  1. переключатель Visible Meta Files in Editor → Project Settings → Editor → Version Control Mode
  2. переключатель Force Text на Editor → Project Settings → Editor → Asset Serialization Mode
  3. сохранить сцену и проект File меню

также наша команда использует немного более расширенными .gitignore file:

# =============== #
# Unity generated #
# =============== #
Temp/
Library/

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

# ============ #
# OS generated #
# ============ #
.DS_Store
.DS_Store?
._*
.Spotlight-V100
.Trashes
ehthumbs.db
Thumbs.db

обратите внимание, что только папки, которые вы должны держать под управление версиями являются Assets и ProjectSettings.

дополнительную информацию о сохранении проекта Unity под управлением исходного кода Вы можете найти в этот пост.

что такое GIT?

Git-это бесплатная и с открытым исходным кодом распределенная система управления версиями ( SCM), разработанная Линусом Торвальдсом в 2005 году (основатель ОС Linux). Он создан для того чтобы контролировать все rom малое к большим проектам с скоростью и эффективностью. Ведущие компании, такие как Google, Facebook, Microsoft использует GIT каждый день.

Если вы хотите узнать больше о GIT проверьте это краткое руководство,

прежде всего убедитесь, что у вас Настройка среды Git.Вам нужно настроить как локальную среду, так и репозиторий Git (я предпочитаю Github.com).

git client application Mac / Windows

для клиентского приложения Git gui я рекомендовал вам пойти с Github.com,

GitHub-это место, где можно поделиться кодом с друзьями, коллегами, одноклассниками и совершенно незнакомыми людьми. Более пяти миллионов человек использовать GitHub для создания удивительных вещей.

настройки Unity3d

вам нужно сделать эти параметры

переключитесь на видимые мета-файлы в меню Правка → Настройки проекта → редактор → режим управления версиями.

enter image description here

включить внешнюю опцию в Unity → настройки → пакеты → репозиторий

enter image description here

переключитесь в режим принудительного ввода текста в меню Правка → Настройки проекта → редактор → режим сериализации активов.

enter image description here

источник: использование Git с 3D-играми Управление Версиями

чтобы добавить ко всему изложенному, он также идеально подходит для использования git lfs С единства. Я использую это, так как он вышел и не было никаких проблем.

вы хотите добавить это .gitattributes рядом с вашим .gitignore file

*.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

*.a filter=lfs diff=lfs merge=lfs -text
*.mp3 filter=lfs diff=lfs merge=lfs -text
*.wav filter=lfs diff=lfs merge=lfs -text
*.aif filter=lfs diff=lfs merge=lfs -text
*.ttf filter=lfs diff=lfs merge=lfs -text
*.png filter=lfs diff=lfs merge=lfs -text
*.jpg filter=lfs diff=lfs merge=lfs -text
*.exr filter=lfs diff=lfs merge=lfs -text
*.fbx filter=lfs diff=lfs merge=lfs -text
*.FBX 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

Это мой список обновленный файл. Если вы используете дополнительные двоичные файлы, а не списки, добавьте их.

У меня также есть файлы, настроенные для использования yamlmerge, вам нужно будет настроить это. Вы можете прочитать об этом здесь: http://docs.unity3d.com/Manual/SmartMerge.html

Я думал, что я мог бы запостить проще .gitignore для всех, кто заинтересован:

# Ignore Everything
/*

# Except for these:
!/.gitignore
!/Assets
!/ProjectSettings

теперь у нас есть бесшовная интеграция в unity с расширением GitHub to Unity... https://unity.github.com/

новое расширение GitHub для Unity приносит рабочий процесс GitHub и многое другое в Unity, обеспечивая поддержку больших файлов с Git LFS и блокировкой файлов.

на момент написания проекта находится в альфа-версии, но по-прежнему используется для личных проектов.

Edit -> Project Settings -> Editor

установить контроль версий для мета-файлов. Установите сериализацию активов для принудительной передачи текста.

Я думаю, что это то, что вы хотите.

только активы и ProjectSettings папки должны быть под контролем версии git.

вы можете сделать gitignore, как это.

[Ll]ibrary/
[Tt]emp/
[Oo]bj/

# Autogenerated VS/MD solution and project files
*.csproj
*.unityproj
*.sln
*.suo
*.userprefs

# Mac
.DS_Store
*.swp
*.swo

Thumbs.db
Thumbs.db.meta

.vs/

главное помнить при использовании git для unity-3d контроль версий исходного кода:

(A)НЕ НАДО регистрация в папке библиотеки. Я сделал эту ошибку несколько раз в прошлом и пострадали за это! Удалите или переместите папку библиотеки перед добавлением вашего проекта / файлов в git.

(B) Использовать "Видимые Мета-Файлы" - для новейших версий Unity - 5.3.4 и выше это происходит по умолчанию. Для некоторых из более ранних версии вам нужно изменить настройки в разделе: Изменить - > Настройки Проекта - > Контроль Версий

(C) использовать a .gitignore file for Unity-чтобы убедиться, что здравомыслие сохраняется и файлы не добавляются без необходимости - если на android / tizen - добавьте правила, чтобы исключить файлы APK и TPK из добавления в репозиторий. Google вокруг для a .gitignore файл для unity или же использовать эту модель .gitignore для единства, предоставленного На GitHub: https://github.com/github/gitignore/blob/master/Unity.gitignore

(D) убедитесь, что .файл gitignore добавляется в репозиторий как первый добавленный файл-потому что в прошлом я лично пропустил добавление .файла.gitignore есть много мыслей в ретроспективе о том, почему это произошло - но в настоящее время я просто копирую и добавляю .файл gitignore в качестве первого шага настройки репозитория.

Так... чтобы сделать проект Unity готовым для git, выполните следующее:

(1) Перейдите в папку проекта

(2) Тип ГИТ инит .

(3) скопируй .gitignore file: На MacOS: cp ~ / загрузки/.gitignore В Windows: копировать c:\Users[yourusername]\загрузки.gitignore .

(4) git add .gitignore

(5) git add *

надеюсь, что это помогает... всего наилучшего!

можно использовать Github для Unity, a Расширение Unity это приводит рабочий процесс git в пользовательский интерфейс Unity.

Github для единства только что выпущена версия 1.0 расширения.

  • он использует git-lfs( git large file support) для правильного хранения больших активов
  • блокировка файлов, так что никто больше не перезаписывает ваш актив фиксирует
  • нажмите и потяните в/из любой remote репозиторий
  • вы также можете скачать его в Unity Asset Store:https://assetstore.unity.com/packages/tools/version-control/github-for-unity-118069

Unity также предоставляет свой собственный контроль версий исходного кода. до unity5 это был сервер unityAsset, но теперь он обесценился. и запустить новую систему управления SVN под названием unity collaborate.но основная проблема использования unity и любого SVN-это фиксация и слияние сцены . но не svn дают нам способ решить такого рода конфликты или объединить сцену . так что зависите от вас, с каким SVN вы знакомы . Я использую инструмент SmartSVN на Mac . и черепаха на окнах .

enter image description here

Я бы предпочел, чтобы вы использовали BitBucket, так как он не является публичным и есть официальный учебник по Unity на Bitbucket.

https://unity3d.com/learn/tutorials/topics/cloud-build/creating-your-first-source-control-repository

надеюсь, что это помогает.

просто добавляя в тему Gitignore. Рекомендуемый способ игнорирует только библиотеку и Temp, если его корень wihtin вашего проекта git. если вы похожи на меня и иногда нуждаетесь в проекте unity, чтобы быть частью РЕПО, а не всей РЕПО, правильные строки в gitignore будут:

**/[Tt]emp
**/[Ll]ibrary
**/[Bb]uild