Каковы наилучшие практики использования управления исходными кодами Git в Unity 3D, особенно в отношении бинарной природы проектов Unity 3D? Пожалуйста, опишите рабочий процесс, какие пути будут включены в .gitignore, какие настройки должны быть установлены в Unity и / или проекте, и любые другие особые вещи, которые следует отметить.
Примечание: я понимаю, что использование Asset Server является рекомендованным Unity способом, но я хотел бы использовать Git по ряду причин. Пожалуйста, не отвечайте так, чтобы утверждать, что я должен просто использовать Asset Server. Сервер активов действительно не вариант для меня.
git
unity3d
version-control
PressingOnAlways
источник
источник
Ответы:
Ниже приводится выдержка из моего личного блога .
Использование 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 без особенностей ОС.
Настройки Unity3D
Для версий Unity 3D v4.3 и выше:
External
параметр вUnity → Preferences → Packages → Repository
.Edit
меню и выберитеProject Settings → Editor
:Version Control Mode
наVisible Meta Files
.Asset Serialization Mode
наForce Text
.File
меню.Хотите перенести существующее хранилище в LFS?
Проверьте мой блог для шагов о том, как это сделать здесь .
Дополнительная конфигурация
Одно из немногих основных неудобств, связанных с использованием Git с проектами Unity3D, заключается в том, что Git не заботится о каталогах и с радостью оставит пустые каталоги после удаления из них файлов. Unity3D создаст файлы * .meta для этих каталогов и может вызвать небольшую битву между членами команды, когда Git будет продолжать добавлять и удалять эти метафайлы.
Добавьте этот хук Git после слияния в
/.git/hooks/
папку для репозиториев с проектами Unity3D в них. После любого Git pull / merge, он посмотрит, какие файлы были удалены, проверит, является ли каталог, в котором он существовал, пустым, и если это так, удалите его.источник
Hidden Meta Files
?В 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
файл:Обратите внимание, что единственными папками, которые нужно держать под контролем исходного кода, являются
Assets
иProjectSettings
.Более подробную информацию о сохранении Unity Project под контролем источников вы можете найти в этом посте .
источник
Hidden Meta Files
?Что такое GIT?
Git - это бесплатная распределенная система контроля версий (SCM) с открытым исходным кодом, разработанная Линусом Торвальдсом в 2005 году (основатель ОС Linux). Он создан для быстрого и эффективного управления всем, от небольших до крупных проектов. Ведущие компании, такие как Google, Facebook, Microsoft используют GIT каждый день.
Если вы хотите узнать больше о GIT, посмотрите этот краткий учебник ,
Прежде всего убедитесь, что у вас настроена среда Git. Вам нужно настроить как локальную среду, так и репозиторий Git (я предпочитаю Github.com).
GIT клиентское приложение Mac / Windows
Для клиентского приложения GIT я рекомендую вам воспользоваться Github.com,
GitHub - это место, где можно делиться кодом с друзьями, коллегами, одноклассниками и совершенно незнакомыми людьми. Более пяти миллионов человек используют GitHub для создания удивительных вещей вместе.
Настройки Unity3d
Вам нужно сделать эти настройки
Переключитесь на Видимые метафайлы в меню «Правка» → «Настройки проекта» → «Редактор» → «Режим контроля версий».
Включить внешний параметр в Unity → Настройки → Пакеты → Репозиторий
Переключитесь на Принудительный текст в меню «Правка» → «Настройки проекта» → «Редактор» → «Сериализация активов».
Source: Использование Git с 3D-играми Source Control
источник
Preferences > Packages
в Unity 5.x Normal? ТыЧтобы добавить ко всему изложенному, также идеально использовать git lfs с Unity. Я использовал это, так как это вышло, и у меня не было никаких проблем с этим.
Вы хотите добавить это
.gitattributes
рядом с вашим.gitignore
файломЭто мой список файлов. Если вы используете дополнительные двоичные файлы, которых нет в списке, добавьте их.
У меня также есть файлы, настроенные для использования yamlmerge, вам нужно это настроить. Вы можете прочитать об этом здесь: http://docs.unity3d.com/Manual/SmartMerge.html
источник
Теперь у нас есть бесшовная интеграция в единство с расширением Github to Unity ... https://unity.github.com/
Новое расширение GitHub для Unity обеспечивает рабочий процесс GitHub и многое другое для Unity, обеспечивая поддержку больших файлов с помощью Git LFS и блокировку файлов.
На момент написания проекта он находится в альфа-версии, но все еще может использоваться для личных проектов.
источник
Я думал, что я мог бы опубликовать более простой
.gitignore
для всех, кто заинтересован:источник
UnityPackageManager/
иPackages/
).Основные моменты, которые следует помнить при использовании 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. Задумайтесь о том, почему это произошло, но сейчас я просто копирую и добавляю файл .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 *
Надеюсь, это поможет ... всего наилучшего!
источник
Edit -> Project Settings -> Editor
Установите контроль версий для метафайлов. Установите Сериализацию Актива, чтобы заставить текст.
Я думаю, что это то, что вы хотите.
источник
Я бы предпочел, чтобы вы использовали BitBucket, поскольку он не является общедоступным и есть официальное руководство Unity по Bitbucket.
https://unity3d.com/learn/tutorials/topics/cloud-build/creating-your-first-source-control-repository
надеюсь это поможет.
источник
Вы можете использовать Github для Unity , расширение Unity, которое вносит рабочий процесс git в пользовательский интерфейс Unity.
Github для Unity только что выпустил версию 1.0 расширения.
источник
Только папки Assets и ProjectSettings должны находиться под контролем версий git.
Вы можете сделать Gitignore, как это.
источник
Unity также обеспечивает собственный контроль версий Source. до Unity5 это был сервер Univasset, но теперь его амортизация. и запустите новую систему управления SVN под названием UnWollaborate. Но главная проблема заключается в использовании Unity, а любая SVN - это коммитирование и слияние сцены. но ни один из svn не дает нам возможности разрешать подобные конфликты или объединять сцены. так что от вас зависит, с каким SVN вы знакомы. Я использую инструмент SmartSVN на Mac. и черепаха на окнах.
источник
Просто добавляю информацию о Gitignore. Рекомендованный способ игнорирует только Library и Temp, если он находится в корне вашего git-проекта. если вы похожи на меня и иногда вам нужен единый проект, чтобы быть частью репо, а не всего репо, правильные строки в gitignore будут такими:
источник
Я хотел добавить очень простой рабочий процесс от кого-то, кто был разочарован git в прошлом. Есть несколько способов использования git, вероятно, наиболее распространенными для единства являются GitHub Desktop, Git Bash и GitHub Unity.
https://assetstore.unity.com/packages/tools/version-control/github-for-unity-118069 .
По сути, все они делают одно и то же, но это выбор пользователя. Вы можете использовать git для настройки больших файлов, что позволяет бесплатно хранить большие файлы объемом 1 ГБ с дополнительным хранилищем, доступным в пакетах данных по цене 4 долл. / Мес. За 50 ГБ, и это позволит вам передавать файлы размером> 100 МБ в удаленные репозитории (он хранит фактические файлы в сервер и в вашем репо указатель)
https://git-lfs.github.com/
Если по какой-либо причине вы не хотите настраивать lfs, вы можете сканировать свои проекты на наличие файлов> 128 МБ в Windows, введя size: large в каталоге, где находится ваш проект. Это может быть удобно для поиска больших файлов, хотя могут быть пропущены некоторые файлы размером от 100 до 128 МБ.
Общий формат git bash:
мерзавец добавить. (добавляет файлы для фиксации)
git commit -m 'message' (фиксирует файлы с сообщением, они все еще находятся на вашем компьютере, а не в удаленном репо, в основном они были «версионированы» как новый коммит)
git push (отправка файлов в хранилище)
Недостаток git bash для проектов Unity заключается в том, что если файл имеет размер> 100 МБ, вы не получите ошибку, пока не нажмете. Затем вы должны отменить свой коммит, вернув свою голову к предыдущему коммиту. Что-то вроде хлопот, особенно если вы новичок в git bash.
Преимущество GitHub Desktop в том, что ДО того, как вы зафиксируете файлы размером 100 Мб, появится всплывающее сообщение об ошибке. Затем вы можете сжать эти файлы или добавить их в файл .gitignore.
Чтобы использовать файл .gitignore, создайте файл с именем .gitignore в корневом каталоге локального репозитория. Просто добавьте файлы по одной строке за раз, которую вы хотели бы пропустить. SharedAssets и другие файлы, не относящиеся к Asset-папкам, обычно можно не указывать, и они автоматически заполняются в редакторе (пакеты могут быть повторно импортированы и т. Д.). Вы также можете использовать шаблоны для исключения типов файлов.
Если другие люди используют ваш репозиторий GitHub и вы хотите клонировать или вытащить его, у вас есть эти опции, доступные вам также на рабочем столе GitHub или в Git bash.
Я не упомянул много о пакете Unity GitHub, где вы можете использовать GitHub в редакторе, потому что лично я не нашел интерфейс очень полезным, и я не думаю, что в целом он поможет кому-нибудь познакомиться с git, но это только мой предпочтение.
источник