Подтвердить что ты не робот

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

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

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

4b9b3361

Ответ 1

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

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

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

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

Git Workflow

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

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

Клиентское приложение Git GUI

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

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

Для получения актуальной версии Github поддерживал файл Unity.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 и выше:

  1. (Пропустите этот шаг в v4.5 и выше) Включите параметр External в Unity → Preferences → Packages → Repository.
  2. Откройте меню " Edit и выберите " Project Settings → Editor:
    1. Переключите Version Control Mode в Visible Meta Files.
    2. Переключите Asset Serialization Mode Force Text.
  3. Сохраните сцену и проект из меню File.

Хотите перенести существующее хранилище в LFS?

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

Дополнительная конфигурация

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

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

Ответ 2

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

  • Переключитесь на Visible Meta Files в Editor → Project Settings → Editor → Version Control Mode
  • Переключитесь на Force Text в Editor → Project Settings → Editor → Asset Serialization Mode
  • Сохранить сцену и проект из меню File

Также наша команда использует более расширенный .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

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

Более подробную информацию о сохранении Unity Project под контролем источника вы можете найти в этом сообщении.

Ответ 3

Что такое GIT?

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

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

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

Git клиентское приложение Mac/Windows

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

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

Настройки Unity3d

Вам необходимо выполнить следующие настройки

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

enter image description here

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

enter image description here

Переключитесь на Force Text в Edit → Project Settings → Editor → Serialization Mode.

enter image description here

Источник: Использование GIT С контролем источника 3D-игр

Ответ 4

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

Вы хотите добавить этот .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

Ответ 5

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

# Ignore Everything
/*

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

Ответ 6

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

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

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

Ответ 7

Edit -> Project Settings -> Editor

Установите управление версиями в метафайлы. Установите Asset Serialization для принудительного ввода текста.

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

Ответ 8

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

(A) НЕ регистрируйте папку "Библиотека". Я делал эту ошибку несколько раз в прошлом и пострадал за это! Удалите ИЛИ переместите папку библиотеки перед добавлением вашего проекта/файлов в git.

(B) Используйте "Видимые метафайлы" - для новейших версий Unity - 5.3.4 и выше это происходит по умолчанию. Для некоторых более ранних версий вам нужно изменить настройки в: Edit-> Project Settings-> Version Control

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

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

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

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

(2) Наберите git init.

(3) Скопируйте файл .gitignore: В MacOS: cp ~/Downloads/.gitignore В Windows: скопируйте c:\Users [имя_руза_пользователя]\Downloads.gitignore.

(4) git add.gitignore

(5) git add *

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

Ответ 10

Только папки Активы и 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/

Ответ 11

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

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

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

Ответ 12

Unity также предоставляет собственный контроль над версиями версий. до единства5 это был единый сервер, но теперь он обесценился. и запускает новую систему управления SVN, называемую объединением union.but, основная проблема, использующая единство и любой SVN, является фиксацией и слиянием сцены. но Non of svn дают нам способ решить такие конфликты или слияние сцены. так что зависеть от вас, с которым SVN вы знакомы. Я использую SmartSVN-инструмент на Mac. и черепаха на окнах.

введите описание изображения здесь

Ответ 13

Bitbucket также является очень удобным git исходным агентом для Unity. С помощью программного обеспечения "Исходное дерево". вы можете направить весь свой код на сервер в команде.

Ответ 14

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

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