Перед началом совместной работы над большим проектом нужно выполнить настройки Git. Они помогут избежать проблем, связанных с использованием больших файлов, разных операционных систем и разных кодировок у разных разработчиков.
1C:EDT содержит встроенную поддержку Git, поэтому если вы создаете или разрабатываете учебные проекты, небольшие конфигурации, то вы можете пропустить этот раздел и перейти к следующему: Настройки групповой разработки (config).
Если же вы собираетесь модифицировать типовые прикладные решения «1С:Предприятия», то вам понадобится установить и настроить Git LFS (Large File Storage). Это расширение для Git, предназначенное для работы с большими файлами и бинарными данными, такими как изображения, видео, аудиофайлы, 3D-модели и другие подобные данные.
git lfs install
Git LFS initialized.
В результате выполнения этой команды в конфигурацию Git будут добавлены параметры, необходимые для работы с Git LFS. Вы можете увидеть их, нажав C:\Users\ИмяПользователя\.gitconfig:
, или открыв файл конфигурации, который стандартно находится в каталоге пользователя[filter "lfs"]
required = true
clean = git-lfs clean -- %f
smudge = git-lfs smudge -- %f
process = git-lfs filter-process
Теперь, если вы клонируете репозиторий, использующий Git LFS, вы сможете беспрепятственно получать и отправлять все файлы проекта.
Но если вы захотите создать для своего проекта новый репозиторий, использующий Git LFS, то вам нужно будет сделать дополнительные настройки, предназначенные именно для этого репозитория: Настройка Git LFS в новом репозитории.
Эти настройки можно выполнить в параметрах 1C:EDT или из командной строки в консоли Git, если Git уже установлен у вас на компьютере.
Чтобы открыть настройки Git в параметрах 1C:EDT:
git config --global user.email johndoe@example.com
Результат будет одинаковым.
Далее все настройки будут описаны для работы с параметрами 1C:EDT и в качестве справки будут даны консольные команды.
При первом коммите 1C:EDT попросит вас указать имя и адрес электронной почты, которыми она будет идентифицировать ваши коммиты. Чтобы другие разработчики могли понимать, кто именно внес те или иные изменения.
При работе из командной строки используйте следующие команды:
git config --global user.name "John Doe"
git config --global user.email johndoe@example.com
На вашем компьютере может существовать ограничение на длину имени файла, например 260 символов в операционной системе Windows. Поэтому при клонировании репозиториев или при создании локальных репозиториев можно получить ошибку Filename too long
.
git config --system core.longpaths true
При работе с удаленным репозиторием могут возникать проблемы во время выполнения команд Push to origin и Получить и слить в том случае, когда вы работаете по протоколу HTTP и в репозитории есть большие файлы. В этом случае вам поможет увеличение параметра http.postBuffer.
При работе из командной строки используйте следующую команду:
git config --global http.postBuffer 1048576000
Подробнее о назначении этого параметра можно прочитать в документации Git на английском языке: git config http.postBuffer.
Если разработчики, работающие над проектом, используют разные операционные системы (Microsoft Windows, Linux, macOS), нужно настроить конвертацию символов окончания строк при помещении в репозиторий и чтении из него. Следующие команды настраивают Git таким образом, что в рабочей копии разработчика будут использоваться «родные» для его операционной системы символы, а в репозитории всегда будет использоваться LF.
Windows
При работе из командной строки используйте следующие команды:
git config --global core.autocrlf true
git config --global core.safecrlf true
Linux и macOS
При работе из командной строки используйте следующие команды:
git config --global core.autocrlf input
git config --global core.safecrlf true
Подробнее о назначении этих параметров можно прочитать в документации Git на английском языке: git config core.autocrlf и git config core.safecrlf.
Файлы с русскими буквами могут показываться в нечитаемой кодировке.
При работе из командной строки используйте следующую команду:
git config --global core.quotePath false
Подробнее о назначении этого параметра можно прочитать в документации Git на английском языке: git config core.quotePath.
Если вы еще не установили Git и Git LFS, сделайте это: Установка Git и Git LFS.
Если вы хотите, чтобы ваш новый репозиторий использовал Git LFS, перечисленные ниже настройки нужно выполнить после создания репозитория, но до первого коммита в него. В принципе, можно настроить поддержку Git LFS и для существующего репозитория, но это значительно сложнее.
git lfs install
Updated Git hooks.
Git LFS initialized.
Эта команда создаст в репозитории специальный хук pre-push, который будет передавать файлы Git LFS на сервер при выполнении команды Отправить.
git lfs track "*.cf"
git lfs track "*.bin"
git lfs track "*.png"
git lfs track "*.gif"
git lfs track "*.bmp"
git lfs track "*.jpg"
git lfs track "*.zip"
git lfs track "*/Ext/Template.bin"
git lfs track "*/Ext/Module.bin"
В результате выполнения этих команд в каталоге репозитория будет создан файл .gitattributes, содержащий выполненные вами настройки.
git add .gitattributes
Теперь вы можете выполнить первый коммит в этом репозитории, а затем отправить изменения в удаленный репозиторий.
Имейте в виду, что не все Git-серверы, которые можно использовать для размещения удаленных репозиториев, поддерживают Git LFS. Кроме этого серверы, имеющие такую поддержку, по-разному ее реализуют. Некоторые делают это автоматически для всех репозиториев (например, GitHub), а в некоторых ее надо включать в явном виде в настройках репозитория (например, Bitbucket).
При работе с удаленными репозиториями, расположенными на других компьютерах, низкая производительность сетевых соединений может приводить к появлению ошибок тайм-аута. Например, операция импорта проекта может закончиться с такой ошибкой:
Git repository clone failed.
Read timed out after 30 000 ms
В этом случае можно попробовать увеличить тайм-аут удаленного соединения, установленный по умолчанию в 30 с. Для этого нажмите Тайм-аут удаленного подключения (сек) введите большее значение.
. В полеЕсли вы не настроили символы окончания строк и отправили свою ветку на сервер, то при слиянии будут обнаружены отличия практически во всех файлах.