Как использовать Git для управления версиями Unity3D?
каковы рекомендации по использованию Git управление версиями с Unity 3D, особенно при работе с бинарной природой проектов Unity 3D? Пожалуйста, опишите рабочий процесс, какие пути будут включены .gitignore, какие настройки должны быть установлены в Unity и / или проекте, и любые другие специальные вещи, которые следует отметить.
примечание: Я понимаю, что использование сервера активов-это рекомендуемый Unity способ, но я хотел бы использовать Git по разным причинам. Пожалуйста нет ответов, которые утверждают или утверждают, что я должен просто использовать сервер активов. Сервер активов действительно не вариант для меня.
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 и выше:
- (пропустите этот шаг в v4.5 и выше) включить на
Unity → Preferences → Packages → Repository
.- открыть и выбрать
Project Settings → Editor
:
- Switch
Version Control Mode
toVisible Meta Files
.- Switch
Asset Serialization Mode
доForce Text
.- сохранить сцену и проект .
хотите перенести существующее РЕПО в LFS?
проверьте мой пост в блоге для шагов о том, как это сделать здесь.
Дополнительные Настройки
одна из немногих серьезных неприятностей, связанных с использованием Git с проектами Unity3D, заключается в том, что Git не заботится о каталогах и с радостью оставит пустые каталоги вокруг после удаления файлов из них. Unity3D сделает *.мета-файлы для этих каталогов и могут вызвать битву между членами команды, когда git commits продолжает добавлять и удалять эти мета-файлы.
добавить этот git после слияния крюк до
/.git/hooks/
папка для репозиториев с проектами Unity3D в них. После любого git pull / merge он посмотрит, какие файлы были удалены, проверьте, существует ли каталог, в котором он существовал пустой, и если да, то удалите его.
в Unity 4.3 вы также должны были включить внешнюю опцию из настроек, но поскольку Unity 4.5 они отбросили опцию для этого, поэтому полный процесс настройки выглядит так:
- переключатель
Visible Meta Files
inEditor → Project Settings → Editor → Version Control Mode
- переключатель
Force Text
наEditor → Project Settings → Editor → Asset Serialization Mode
- сохранить сцену и проект
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
вам нужно сделать эти параметры
переключитесь на видимые мета-файлы в меню Правка → Настройки проекта → редактор → режим управления версиями.
включить внешнюю опцию в Unity → настройки → пакеты → репозиторий
переключитесь в режим принудительного ввода текста в меню Правка → Настройки проекта → редактор → режим сериализации активов.
чтобы добавить ко всему изложенному, он также идеально подходит для использования 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 . и черепаха на окнах .
Я бы предпочел, чтобы вы использовали 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