Skip to main content

Синхронизация вилки

Синхронизируйте вилку репозитория, чтобы гарантировать его актуальность в вышестоящем репозитории.

Кто может использовать эту функцию?

People with write access for a forked repository can sync the fork to the upstream repository.

Platform navigation

Синхронизация ветви вилки из пользовательского веб-интерфейса

  1. На GitHub перейдите на главную страницу разветвленного репозитория, который требуется синхронизировать с вышестоящим репозиторием.

  2. Над списком файлов выберите раскрывающееся меню "Синхронизация вилки ".

    Снимок экрана: главная страница вилки. Раскрывающееся меню, помеченное значком синхронизации и словом "Синхронизация вилки", описано в темно-оранжевый цвет.

  3. Просмотрите сведения о фиксациях из вышестоящего репозитория, а затем щелкните Обновить ветвь.

Если изменения из вышестоящего репозитория вызывают конфликты, GitHub предложит создать запрос на вытягивание для разрешения конфликтов.

Синхронизация ветви вилки с помощью GitHub CLI

GitHub CLI — это инструмент с открытым исходным кодом для использования GitHub из командной строки компьютера. При работе с командной строкой можно использовать GitHub CLI — это позволит экономить время и не переключать контекст. Дополнительные сведения о GitHub CLIсм. в разделе "Сведения о GitHub CLI".

Чтобы обновить удаленную вилку из родительского элемента, используйте подкоманду gh repo sync -b BRANCH-NAME и укажите имена вилки и ветви в качестве аргументов.

gh repo sync owner/cli-fork -b BRANCH-NAME

Если изменения из вышестоящего репозитория вызывают конфликт, то GitHub CLI не сможет синхронизироваться. Вы можете задать флаг --force для перезаписи целевой ветви.

Синхронизация ветви вилки из командной строки

Прежде чем синхронизировать вилку с вышестоящим репозиторием, необходимо настроить удаленный репозиторий, указывающий на вышестоящий репозиторий в Git. Дополнительные сведения см. в разделе Настройка удаленный репозиторий для вилки.

  1. Откройте ТерминалТерминалGIT Bash.

  2. Измените текущий рабочий каталог на локальный проект.

  3. Получение ветвей и их соответствующих фиксаций из вышестоящего репозитория. Фиксации в BRANCH-NAME будут храниться в локальной ветви upstream/BRANCH-NAME.

    $ git fetch upstream
    > remote: Counting objects: 75, done.
    > remote: Compressing objects: 100% (53/53), done.
    > remote: Total 62 (delta 27), reused 44 (delta 9)
    > Unpacking objects: 100% (62/62), done.
    > From https://github.com/ORIGINAL-OWNER/ORIGINAL-REPOSITORY
    >  * [new branch]      main     -> upstream/main
    
  4. Извлеките локальную ветвь вилки по умолчанию — в этом примере мы используем main.

    $ git checkout main
    > Switched to branch 'main'
    
  5. Объедините изменения из вышестоящей ветви по умолчанию ( в данном случае upstream/main) с локальной ветвью по умолчанию. Это приведет к синхронизации ветви вилки по умолчанию с вышестоящим репозиторием без потери локальных изменений.

    $ git merge upstream/main
    > Updating a422352..5fdff0f
    > Fast-forward
    >  README                    |    9 -------
    >  README.md                 |    7 ++++++
    >  2 files changed, 7 insertions(+), 9 deletions(-)
    >  delete mode 100644 README
    >  create mode 100644 README.md
    

    Если локальная ветвь не имеет уникальных фиксаций, Git выполнит быстрое перемещение вперед. Дополнительные сведения см. в статье Базовое ветвление и слияние в документации по Git.

    $ git merge upstream/main
    > Updating 34e91da..16c56ad
    > Fast-forward
    >  README.md                 |    5 +++--
    >  1 file changed, 3 insertions(+), 2 deletions(-)
    

    Если локальная ветвь имела уникальные фиксации, возможно, потребуется устранить конфликты. Дополнительные сведения см. в разделе Разрешение конфликтов слияния.

Совет. При синхронизации вилки обновляется только локальная копия репозитория. Чтобы обновить вилку на GitHub.com, необходимо отправить изменения.