Git и Unity

Для того что бы вести разработку на Unity и использовать при этом Git, следует сделать следующее:

  • Настроить редактор для отображения meta-файлов и для хранения всех изменений в этих meta-файлах:

Git_Unity_1

Git_Unity_2

  • Создать проект в Uinty
  • Создать репозиторий в папке созданного проекта
  • Добавить файл игнорирования .gitignore следующего содержания:
  • [Ll]ibrary/
    [Tt]emp/
    [Oo]bj/
    [Bb]uild/
    
    # Autogenerated VS/MD solution and project files
    *.csproj
    *.unityproj
    *.sln
    *.suo
    *.tmp
    *.user
    *.userprefs
    *.pidb
    *.booproj
    
    # Unity3D generated meta files
    *.pidb.meta
    
    # Unity3D Generated File On Crash Reports
    sysinfo.txt

    Под Windows создать файл с названием .gitignor из контекстного меню скорее всего не получится, Windows будет ругаться на отсутствие имени файла. Но это легко можно обойти: создаём файл .gitignor.txt, затем открываем окно команд в папке с этим файлом и командой

    ren .gitignor.txt .gitignor

    переименовываем файл.

    Тут важно понимать что комитить следует только то, что хранится в папках Assets и ProjectSettings, причём если вы создаёте префаб, новый скрипт, просто папку или ещё что-то, то Unity автоматически сгенерирует meta-файлы под созданный объект. Например при создании скрипта CarEngine.cs создастся файл CarEngine.cs.meta, и оба этих файла следует комитить. Повторюсь, обязательно следует комитить meta-файлы! :)

  • В Unity при создании скриптов используются специальные шаблоны. По своей сути это обыкновенные текстовые файлы, но по умолчанию они имеют Unix’овый формат конца строк (LF) и если вы работаете с Unity под Windows, то каждый раз создавая скрипт из контекстного меню Unity, в этом скрипте необходимо будет исправлять формат конца строк на тот который принят в Windows (CRLF). Если для редактирования скриптов вы используете Visual Studio, то эта IDE к примеру будет всё время предлагать это сделать.
    Для того что бы по умолчанию в шаблоне использовался формат конца строк CRLF, следует поправить шаблоны.
    Шаблоны лежат тут C:\Program Files\Unity\Editor\Data\Resources\ScriptTemplates
    Каждый из них следует открыть через Notepad++ и исправить формат конца строк на CRLF (Notepad++ нужно запускать от имени администратора)
    Git_Unity_6
  • При индексировании файлов могут возникать проблемы вида:
    Git_Unity_7
    git -c diff.mnemonicprefix=false -c core.quotepath=false add -f — Assets/Editor/CarEngineEditor.cs.meta
    fatal: LF would be replaced by CRLF in Assets/Editor/CarEngineEditor.cs.meta
    Файл при этом в индекс не добавляется. Исправить это не трудно, достаточно в папке проекта создать файл .gitattributes (создаётся так же как файл .gitignore) и добавить ему в качестве содержимого:

    # Apply native OS line-endings on checkout of these files...
    *.boo text
    *.c text
    *.cginc text
    *.config text
    *.contentproj text
    *.cpp text
    *.dae text
    *.DAE text
    *.dtd text
    *.fx text
    *.glsl text
    *.h text
    *.inc text
    *.ini text
    *.js text
    *.JSFL text
    *.jsfl text
    *.json text
    *.log text
    *.md text
    *.mel text
    *.php text
    *.shader text
    *.txt text
    *.TXT text
    *.xaml text
    *.xml text
    *.xsd text
    .gitattributes text
    .gitignore text
    COPYING text
    INSTALL* text
    KEYS* text
    LICENSE* text
    NEWS* text
    NOTICE* text
    README* text
    TODO* text
    WHATSNEW* text
    
    # Apply Unix-style LF line-endings on checkout of these files...
    *.meta text eol=lf
    *.sh text eol=lf
    *.vspscc text eol=lf
    .htaccess text eol=lf
    
    # Previous "binary"
    *.unity text eol=lf
    *.asset text eol=lf
    *.prefab text eol=lf
    
    # Apply Windows/DOS-style CR-LF line-endings on checkout of these files...
    *.bat text eol=crlf
    *.cmd text eol=crlf
    *.csproj text eol=crlf
    *.sln text eol=crlf
    *.user text eol=crlf
    *.vcproj text eol=crlf
    *.cs text eol=crlf
    *.css text eol=crlf
    *.htm text eol=crlf
    *.html text eol=crlf
    
    # No end-of-line conversions are applied (i.e., "-text -diff") to these files...
    *.7z binary
    *.ai binary
    *.anim binary
    *.apk binary
    *.bin binary
    *.bmp binary
    *.BMP binary
    *.com binary
    *.COM binary
    *.controller binary
    *.cubemap binary
    *.dex binary
    *.dll binary
    *.DLL binary
    *.dylib binary
    *.eps binary
    *.exe binary
    *.EXE binary
    *.exr binary
    *.fbx binary
    *.FBX binary
    *.fla binary
    *.flare binary
    *.flv binary
    *.gif binary
    *.guiskin binary
    *.gz binary
    *.ht binary
    *.ico binary
    *.jpeg binary
    *.jpg binary
    *.keystore binary
    *.mask binary
    *.mat binary
    *.mb binary
    *.mp3 binary
    *.mp4 binary
    *.mpg binary
    *.ogg binary
    *.PCX binary
    *.pcx binary
    *.pdb binary
    *.pdf binary
    *.physicMaterial binary
    *.physicmaterial binary
    *.png binary
    *.ps binary
    *.psd binary
    *.qt binary
    *.sobinary binary
    *.swf binary
    *.tga binary
    *.tif binary
    *.tiff binary
    *.ttf binary
    *.TTF binary
    *.unitypackage binary
    *.unityPackage binary
    *.wav binary
    *.wmv binary
    *.zip binary
    *.ZIP binary

    Если тут чего-то не хватает, то добавьте сами :)

  • Не забудьте что файлы .gitignore и .gitattributes тоже следует проиндексировать и закомитить.

Оставить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Капча * Лимит времени истёк. Пожалуйста, перезагрузите CAPTCHA.

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.