Обновление форка

В процессе прохождения курса в основной репозиторий будут добавляться изменения (новые лабораторные работы, изменения в тестах, исправления ошибок и т.д.) — эти изменения не будут автоматически появляться в сделанных форках.

Чтобы добавить изменения в Ваш форк из основного репозитория, выполните следующие шаги:

  1. Откройте сайт репозитория, который Вам прислал преподаватель.

  2. Нажмите кнопку Code, выберите HTTPS и нажмите кнопку копирования:

    ../../_images/copy_original_repo_url2.png
  3. Откройте терминал в среде разработки PyCharm:

    ../../_images/pycharm_open_terminal2.png
  4. В терминале выполните команду git remote add upstream <ссылка-на-основной-репозиторий>:

    ../../_images/add_upstream2.png
  5. В терминале выполните команду git fetch upstream:

    ../../_images/fetch_upstream2.png

Important

Обратите внимание, что ссылка на скриншоте выше указывает на родительский репозиторий.

  1. В терминале выполните команду git merge upstream/main --no-edit:

    ../../_images/merge_upstream2.png

Note

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

В результате выполнения этих команд в Вашем локальном форке появятся последние изменения из основного репозитория.

Больше информации о командах, описанных выше, можно найти в официальной документации по Git.

Обновление форка с помощью комментария в 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 изменений.