Git для разработчика SS14

Материал из Starshine Wiki

Предисловие

В тексте будет часто упоминаться GitLab - аналог GitHub, которым также пользуется Workbench Team. Принципиальной разницы нет, все шаги возможны и на GitHub, но лично мне удобнее работать с GitLab. Если Вам не ясны какие-либо термины из текста ниже, обратитесь к разделу Словарь: Внутренние операции Git.

Установка Git

Для работы с Git для SS14 Вам понадобятся:

  • Git
    • Если Вы хотите использовать Git только в консоли, поставьте галочку при установке:
GitBash.png

Если Вы работаете в Linux, то, скорее всего, будете использовать Git через терминал или выбранную Вами IDE, и, возможно, он у Вас уже установлен.

Некоторые IDE имеют в себе интеграцию Git, но этом руководстве будет информация только об использовании приложений Git Bash и Fork.

Fork

Fork — быстрый и удобный Git-клиент, позволяющий делать всё, что можно в консоли, но удобнее.

Налаживание репозиториев Git

Репозиторий - это просто база кода. Репозитории содержат branch'и, а эти branch'и содержат различные commit'ы. Возможно, Вы слышали об этих двух понятиях - подробнее о них будет рассказано позже.

Удаленный репозиторий - это просто репозиторий на GitLab. Локальный репозиторий - это тот, который находится на Вашем компьютере.

Создание Вашего remote репозитория

Сперва давайте создадим собственный Fork удаленного репозитория Space Station 14. Для этого, конечно же, потребуется учетная запись GitLab. Forking означает, что Вы копируете всю историю и изменения репозитория в свой собственный удаленный репозиторий, чтобы иметь возможность свободно работать с кодом.

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

Перейдите в наш репозиторий Space Station 14(GitHub, GitLab) и нажмите здесь:

ForksButton.png

Затем Вас спросят как назвать Fork - просто назовите его как угодно! Но если Вы хотите просто помочь в разработке, я бы выбрал space-station-14.

Создание Вашего локального репозитория

Теперь нам нужно загрузить наш удаленный репозиторий на компьютер (клонировать), чтобы мы могли внести в него некоторые изменения. Технически, Вы можете изменять репозиторий удалённо (на GitLab есть неплохие инструменты), но наличие его на Вашем компьютере означает, что Вы используете IDE, такие как Visual Studio или Rider, для сборки игры и запуска тестов, а также легко работаете с Git.

Для каждого шага будут приведены скриншоты и инструкции для Git Bash и Fork для Windows.

GitBash:

Перейдите в то место на Вашем компьютере, где Вы хотите разместить локальный репозиторий, и:

GitBashHere.png

Выберите какой репозиторий клонировать:

GitBashCloneCommand.png

Проделайте такие же команды с https://git.arumoon.ru/Workbench-Team/space-station-14, чтобы у Вас была возможность обновлять свои branch'и новыми обновлениями upstream'а.


Подмодули

Обратите на это внимание! Если этого не сделать, то при попытке сборки игры вы получите множество странных ошибок о недоступности тех или иных модулей.

В Space Station 14 есть много подмодулей - в первую очередь, движок RobustToolbox. Подмодули - это просто репозитории внутри репозитория, и их нужно обновлять вручную. А нужно ли?

У нас есть автоматическая программа обновления подмодулей, так что Вам не нужно постоянно выполнять git submodule update --init --recursive (команда для ручного обновления подмодулей).

Запустите RUN_THIS.py внутри репозитория, который Вы скачали, с помощью Python. Желательно, из терминала (python RUN_THIS.py или python3 RUN_THIS.py). Это должно занять несколько секунд, так что если все мгновенно прекратится, то, вероятно, Вы не используете Python 3.7+ или что-то в этом роде.

Если Вы работаете в Windows и при попытке выполнить приведенную выше команду Вас перенаправляет в Microsoft Store или Вы получаете сообщение в терминале о том, что Python не установлен, необходимо отключить shortcut Microsoft, который может вызывать эту проблему. Это можно сделать, найдя в поиске Windows команду Manage App Execution Aliases, а затем отключив две точки привязки Python.

Если Вы все же хотите модифицировать движок напрямую или обновлять подмодуль вручную (автоматическое обновление иногда доставляет неудобства), создайте файл DISABLE_SUBMODULE_AUTOUPDATE в каталоге BuildChecker/..

Если по каким-либо причинам, Вам понадобится вручную обновить RobustToolbox, Вы можете использовать cd RobustToolbox; git checkout v0.4.87 (замените v0.4.87 на последнюю версию RobustToolbox), затем Вы можете использовать cd..\, чтобы вернуться в репозиторий SS14. Это также пример использования cd для навигации по файлам, не выходя из командной строки.

Branching & Commits (Ветки и коммиты)

Что такое branch?

Зачем это нужно?

Создание и работа с branch'ами

Совмещение branch'ей

Что такое commit?

Отправка commit'ов в branch'и

Pushing и создание Merge Request'ов

Проталкивание commit'ов

Создание Merge Request'ов

Обновление репозитория

Метод fetch + merge

Метод pull

Приложения

Что следует помнить

Краткий пример рабочего процесса

Словарь: Внутренние операции Git

Примечание: Полезные советы и рекомендации

Разрешение конфликтов при merge

Проверка истории

Очистка локальных изменений

Откат сделанного Вами commit'а