Unity и git
Tulenber ⸱
24 December, 2019 ⸱
Beginner ⸱
4 min ⸱
1
2
|
# В начале проекта было 2 слова. И слова эти были
git init
|
Народная мудрость.
Как уже было отмечено в "Контроль версий, геймдев и git lfs" (в котором НЕ говорится, зачем вам контроль версий) первым делом после создания проекта инициализируем git.
Что хранить?
Проекты Unity очень любят генерировать кучу метаинформации и всякого тр…кэша. Проще перечислить 3 папки, которые необходимо индексировать:
- Assets - содержит все ресурсы для проекта.
- Packages - содержит список зависимостей.
- ProjectSettings - содержит конфиги редактора.
Всё остальное генерируется из них.
.gitignore
Существует github/gitignore, на котором можно найти дефолт, используемый при создании проекта на GitHub.
Но если вспомнить, что не Unity единым, то можно сходить на gitignore.io и сгенерировать всё остальное, например, MacOs + Rider + Unity.
1
2
|
git add -A
git commit -m "Initial commit."
|
Настройка Unity
У Unity есть несколько настроек, которые могу превратить ваш проект в картофелину. Необходимо использовать следующие параметры Edit > Project Settings > Editor >
UnityYAMLMerge
Теоретически при выставлении Asset Serialization > “Force Text"
появляется возможность разрешать конфликты в сценах и префабах, но на практике это довольно сложный процесс. На помощь придёт утилита Unity YAML Merge, детальное объяснение использования которой можно найти в нашей статье "Решение конфликтов сцен в Unity и git при помощи UnityYAMLMerge".
git lfs
В посте "Контроль версий, геймдев и git lfs" говорилось, почему будет использоваться git lfs, где его скачать и изучить, а так же какие сервисы его предоставляют.
1
2
|
# Инициализируем git lfs
git lfs install
|
Создаем файл .gitattributes почти на все случаи жизни:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
|
# .gitattributes
# Images
*.ai filter=lfs diff=lfs merge=lfs -text
*.cubemap filter=lfs diff=lfs merge=lfs -text
*.bmp filter=lfs diff=lfs merge=lfs -text
*.exr filter=lfs diff=lfs merge=lfs -text
*.gif filter=lfs diff=lfs merge=lfs -text
*.hdr filter=lfs diff=lfs merge=lfs -text
*.iff filter=lfs diff=lfs merge=lfs -text
*.jpeg filter=lfs diff=lfs merge=lfs -text
*.jpg filter=lfs diff=lfs merge=lfs -text
*.pict filter=lfs diff=lfs merge=lfs -text
*.png filter=lfs diff=lfs merge=lfs -text
*.psd filter=lfs diff=lfs merge=lfs -text
*.tga filter=lfs diff=lfs merge=lfs -text
*.tif filter=lfs diff=lfs merge=lfs -text
*.tiff filter=lfs diff=lfs merge=lfs -text
# Audio
*.mp3 filter=lfs diff=lfs merge=lfs -text
*.wav filter=lfs diff=lfs merge=lfs -text
*.ogg filter=lfs diff=lfs merge=lfs -text
*.aif filter=lfs diff=lfs merge=lfs -text
*.aiff filter=lfs diff=lfs merge=lfs -text
*.it filter=lfs diff=lfs merge=lfs -text
*.mod filter=lfs diff=lfs merge=lfs -text
*.s3m filter=lfs diff=lfs merge=lfs -text
*.xm filter=lfs diff=lfs merge=lfs -text
# Video
*.mp4 filter=lfs diff=lfs merge=lfs -text
*.mov filter=lfs diff=lfs merge=lfs -text
# 3D Objects
*.3dm filter=lfs diff=lfs merge=lfs -text
*.3ds filter=lfs diff=lfs merge=lfs -text
*.blend filter=lfs diff=lfs merge=lfs -text
*.c4d filter=lfs diff=lfs merge=lfs -text
*.collada filter=lfs diff=lfs merge=lfs -text
*.dae filter=lfs diff=lfs merge=lfs -text
*.dxf filter=lfs diff=lfs merge=lfs -text
*.FBX filter=lfs diff=lfs merge=lfs -text
*.fbx filter=lfs diff=lfs merge=lfs -text
*.jas filter=lfs diff=lfs merge=lfs -text
*.lws filter=lfs diff=lfs merge=lfs -text
*.lxo filter=lfs diff=lfs merge=lfs -text
*.ma filter=lfs diff=lfs merge=lfs -text
*.max filter=lfs diff=lfs merge=lfs -text
*.mb filter=lfs diff=lfs merge=lfs -text
*.obj filter=lfs diff=lfs merge=lfs -text
*.ply filter=lfs diff=lfs merge=lfs -text
*.skp filter=lfs diff=lfs merge=lfs -text
*.stl filter=lfs diff=lfs merge=lfs -text
*.ztl filter=lfs diff=lfs merge=lfs -text
# Other
*.a filter=lfs diff=lfs merge=lfs -text
*.exr filter=lfs diff=lfs merge=lfs -text
*.tga filter=lfs diff=lfs merge=lfs -text
*.pdf filter=lfs diff=lfs merge=lfs -text
*.zip filter=lfs diff=lfs merge=lfs -text
*.7z filter=lfs diff=lfs merge=lfs -text
*.dll filter=lfs diff=lfs merge=lfs -text
*.aif filter=lfs diff=lfs merge=lfs -text
*.ttf 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
|
Замечание: Если заполнить .gitattributes руками, то файлы, которые уже были добавлены в индекс git, будут перемещены в git lfs только при следующем их изменении. Для переноса всех файлов определённого типа сразу, можно воспользоваться командой:
1
2
|
# Переносим все файлы *.bin в git lfs
git lfs track '*.bin'
|
Заключение
Некая своя специфика контроля версий для Unity существует, но в целом ничего существенного. Однако, если проект не запускается после чекаута на другую машину, следует сразу проверить, не утащилось ли чего-то, помимо трех перечисленных в начале папок.
На этом можно закончить с первоначальной настройкой окружения и перейти к чему-то более относящемуся к Unity. Пока! =)