Как использовать Git для управления версиями Unity3D?
каковы наилучшие методы использования Git управление версиями с Unity 3D, особенно в отношении двоичной природы проектов Unity 3D? Пожалуйста, опишите рабочий процесс, какие пути будут включены .gitignore, какие настройки должны быть установлены в Unity и / или проекте, и любые другие специальные вещи, которые следует отметить.
примечание: Я понимаю, что использование сервера активов-рекомендуемый способ Unity, но я хотел бы использовать Git по разным причинам. Пожалуйста нет ответов, которые утверждают или утверждают, что я должен просто использовать сервер активов. Сервер активов действительно не вариант для меня.
13 ответов
ниже приводится выдержка из мой личный блог .
использование Git с 3D-играми
Обновление Октября 2015: GitHub с тех пор выпустил плагин для Git под названием Git LFS это напрямую связано с приведенной ниже проблемой. Теперь вы можете легко и эффективно версировать большие двоичные файлы!
Git может отлично работать с 3D-играми из коробки. Однако основным предостережением здесь является то, что versioning большие (>5 Мб) медиафайлы могут быть проблемой в долгосрочной перспективе, поскольку ваша история фиксации раздувается. Мы решили эту потенциальную проблему в наши проекты только с версиями с бинарными активами, когда она является окончательной. Наши 3D художники используют в Dropbox для работы на WIP активы, как по причине выше, так и потому, что это много быстрее и проще (не многие художники будут активно хотеть использовать Git!).
Git Workflow
Ваш Git workflow-процесс - это то, что вам нужно решить для себя, учитывая ваш собственный опыт работы в команде и то, как вы работаете вместе. Однако. Я бы настоятельно рекомендовал соответствующим названием Git Flow методология как описано оригинальным автором здесь.
Я не буду вдаваться в слишком большую глубину здесь о том, как работает методология, поскольку автор описывает ее отлично и в нескольких словах, поэтому ее легко пройти. Я использовал с моей командой для некоторое время, и это лучший рабочий процесс, который мы пробовали до сих пор.
Git GUI клиентское приложение
это действительно личное предпочтение здесь, так как есть довольно много вариантов с точки зрения Git GUI или использовать GUI вообще. Но я хотел бы предложить бесплатно приложение SourceTree как он подключается отлично с расширением потока Git. Прочтите учебник SourceTree здесь о внедрении методологии git Flow в их приложение.
Unity3D Игнорировать Папки
для проверки актуальной версии Github поддерживал единство.файл gitignore без специфики ОС.
# =============== #
# 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 и вверх:
- (пропустите этот шаг в v4.5 и выше) включить на
Unity → Preferences → Packages → Repository
. - открыть
Edit
меню и выберитеProject Settings → Editor
:- переключатель
Version Control Mode
дляVisible Meta Files
. - переключатель
Asset Serialization Mode
toForce Text
.
- переключатель
- сохранить сцену и проект .
хотите перенести существующее РЕПО в LFS?
проверьте мой пост в блоге для шагов о том, как это сделать здесь.
Дополнительные Настройки
одна из немногих основных неприятностей с использованием Git с проектами Unity3D заключается в том, что Git не заботится о каталогах и с радостью оставит пустые каталоги вокруг после удаления файлов из них. В Unity3D сделает *.мета-файлы для этих каталогов и может вызвать битву между членами команды, когда git commits продолжает добавлять и удалять эти мета-файлы.
добавить этот git после слияния крюк до /.git/hooks/
папка для репозиториев с проектами Unity3D в них. После любого git pull / merge он посмотрит, какие файлы были удалены, проверьте, существует ли каталог пустой, и если да, удалите его.
в Unity 4.3 вам также пришлось включить внешнюю опцию из настроек, но поскольку Unity 4.5 они отбросили опцию для этого, поэтому полный процесс настройки выглядит так:
- переключатель
Visible Meta Files
наEditor → Project Settings → Editor → Version Control Mode
- переключатель
Force Text
наEditor → Project Settings → Editor → Asset Serialization Mode
- сохранить сцену и проект
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 Project под контролем источника вы можете найти в этот пост.
что такое GIT?
Git - бесплатная распределенная система управления версиями с открытым исходным кодом ( SCM), разработанная Линусом Торвальдсом в 2005 году (основатель ОС Linux). Он создан для того чтобы контролировать все rom малые к большим проектам с скоростью и эффективностью. Ведущие компании, такие как Google, Facebook, Microsoft, используют git каждый день.
Если вы хотите узнать больше о GIT, проверьте это краткое руководство,
прежде всего убедитесь, что у вас Настройка среды Git.Вам нужно настроить как локальную среду, так и репозиторий Git (я предпочитаю Github.com).
git клиентское приложение Mac / Windows
для клиентского приложения Git gui я рекомендовал вам пойти с Github.com,
GitHub-это место, где можно поделиться кодом с друзьями, коллегами, одноклассниками и совершенно незнакомыми людьми. Более пяти миллионов людей используют GitHub для создания удивительных вещей вместе.
в Unity3D параметры
вам нужно сделать эти параметры
переключитесь на видимые мета-файлы в меню Правка → Настройки проекта → редактор → режим управления версиями.
включить внешнюю опцию в Unity → настройки → пакеты → репозиторий
переключиться на принудительный текст в Правка → Настройки проекта → редактор → режим сериализации активов.
чтобы добавить ко всему изложенному, он также идеально подходит для использования git lfs С единства. Я использую это с тех пор, как он вышел, и у него не было никаких проблем.
вы захотите добавить это .gitattributes рядом с вашим .файл gitignore
*.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 и блокировкой файлов.
на момент написания проекта находится в alpha, но по-прежнему используется для личных проектов.
Edit -> Project Settings -> Editor
установите управление версиями в мета-файлы. Установите сериализацию активов в force text.
Я думаю, что это то, что вы хотите.
только активы и ProjectSettings папки должны находиться под управлением версии git.
можно пример такой.
[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) скопируй .файл гитюдного : На MacOS: cp ~ / загрузки/.гитюдного В Windows: копировать c:\Users[yourusername]\загрузки.гитюдного .
(4) git add .gitignore
(5) git add *
надеюсь, что это помогает... всего наилучшего!
можно использовать Github для Unity, a Расширение Unity это приводит рабочий процесс git в пользовательский интерфейс Unity.
Github для единства только что выпущена версия 1.0 расширения.
- он использует git-lfs (git large file support) для правильного хранения больших активов
- блокировка файлов, чтобы никто другой не перезаписывал ваш актив commits
- нажмите и потяните в / из любой удаленный хранилище
- вы также можете загрузить его в хранилище активов Unity:https://assetstore.unity.com/packages/tools/version-control/github-for-unity-118069
Unity также предоставляет свой собственный контроль версий источника. до unity5 это был сервер unityAsset, но теперь его обесценили. и запустить новую систему управления SVN под названием unity collaborate.но основная проблема с использованием unity и любого SVN-это фиксация и слияние сцены . но не svn дает нам способ решить такого рода конфликты или объединить сцену . поэтому зависите от того, с каким SVN вы знакомы . Я использую инструмент SmartSVN на Mac . и черепаха на окнах .
Я бы предпочел, чтобы вы использовали 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