Обновление форка ================ В процессе прохождения курса в основной репозиторий будут добавляться изменения (новые лабораторные работы, изменения в тестах, исправления ошибок и т.д.) — эти изменения **не будут автоматически появляться** в сделанных форках. Чтобы добавить изменения в Ваш форк из основного репозитория, выполните следующие шаги: 1. Откройте сайт репозитория, который Вам прислал преподаватель. 2. Нажмите кнопку ``Code``, выберите ``HTTPS`` и нажмите кнопку копирования: .. image:: _static/fork_update/copy_original_repo_url.png 3. Откройте терминал в среде разработки PyCharm: .. image:: _static/fork_update/pycharm_open_terminal.png 4. В терминале выполните команду ``git remote add upstream <ссылка-на-основной-репозиторий>``: .. image:: _static/fork_update/add_upstream.png 5. В терминале выполните команду ``git fetch upstream``: .. image:: _static/fork_update/fetch_upstream.png .. important:: Обратите внимание, что ссылка на скриншоте выше указывает на родительский репозиторий. 6. В терминале выполните команду ``git merge upstream/main --no-edit``: .. image:: _static/fork_update/merge_upstream.png .. note:: В зависимости от количества изменений вывод команды может отличаться от того, что на скриншоте выше. В результате выполнения этих команд в Вашем *локальном* форке появятся последние изменения из основного репозитория. Больше информации о командах, описанных выше, можно найти в `официальной документации по Git <https://git-scm.com/docs>`__. Обновление форка с помощью комментария в Pull Request ----------------------------------------------------- Форк может находится в нескольких состояниях по отношению к upstream репозиторию: 1. Форк и upstream выровнены по состояниям. 2. В upstream появились новые изменения, которых ещё нет в форке: 1. Например, при добавлении исправлений для уже существующих файлов. 3. В upstream появились новые изменения, которых ещё нет в форке + были изменения в форке, которые конфликтуют с изменениями из upstream: 1. Например, когда в upstream была добавлена одна из лабораторных работ как образцовая. Для **случаев 2** и **3** предусмотрены механизмы автоматического обновления через комментарий в Pull Request. Для **случая 2**: 1. Обновление происходит с помощью комментария, содержащего подстроку ``/update:get_new`` 1. В форке появятся изменения из upstream репозитория. **Случай 3** подразделяется на два сценария исходя из необходимости сохранения лабораторной работы студента в форке: 1. Если необходимо оставить версию лабораторной работы из форка, то обновление происходит с помощью комментария, содержащего подстроку ``/update:keep_fork``: 1. В форке появятся изменения из upstream, не касающиеся ``main.py`` и ``start.py`` файлов для лабораторных работ: 1. Файлы ``main.py`` и ``start.py`` сохранятся так, как они есть в форке. 2. Все остальные конфликты будут разрешены в пользу upstream изменений. 2. Если необходимо залить в форк версию лабораторной работы из upstream, то обновление происходит с помощью комментария, содержащего подстроку ``/update:keep_upstream`` 1. Форк будет выровнен по состоянию с upstream. 2. Все конфликты будут разрешены в пользу upstream изменений.