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

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

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

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

   ![Снимок экрана: главная страница вилки. Раскрывающееся меню, помеченное значком синхронизации и словом "Синхронизация вилки", описано в темно-оранжевый цвет.](/assets/images/help/repository/sync-fork-dropdown.png)
3. Просмотрите сведения о фиксациях из вышестоящего репозитория, а затем щелкните **Обновить ветвь**.

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

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

GitHub CLI — это инструмент с открытым исходным кодом для использования GitHub из командной строки компьютера. При работе с командной строкой можно использовать GitHub CLI — это позволит экономить время и не переключать контекст. Чтобы узнать больше о GitHub CLI, смотрите [О GitHub CLI](/ru/enterprise-server@3.22/github-cli/github-cli/about-github-cli).

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

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

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

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

Прежде чем синхронизировать вилку с вышестоящим репозиторием, необходимо настроить удаленный репозиторий, указывающий на вышестоящий репозиторий в Git. См [. раздел AUTOTITLE](/ru/enterprise-server@3.22/pull-requests/how-tos/work-with-forks/configuring-a-remote-repository-for-a-fork).

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

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

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

   ```shell
   $ 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://HOSTNAME/ORIGINAL-OWNER/ORIGINAL-REPOSITORY
   >  * [new branch]      main     -> upstream/main
   ```

4. Проверьте локальную ветвь по умолчанию вилки. В этом примере мы используем `main`.

   ```shell
   $ git checkout main
   > Switched to branch 'main'
   ```

5. Слияние изменений из вышестоящей ветви по умолчанию в локальную ветвь по умолчанию. В этом примере ветвь по умолчанию вышестоящей.`upstream/main` Это синхронизирует ветвь по умолчанию вилки с вышестоящим репозиторием без потери локальных изменений.

   ```shell
   $ 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 выполнит быстрое перемещение вперед. См. [раздел "Базовая ветвь и слияние](https://git-scm.com/book/en/v2/Git-Branching-Basic-Branching-and-Merging) " в документации по Git.

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

   Если локальная ветвь имела уникальные фиксации, возможно, потребуется устранить конфликты. См [. раздел AUTOTITLE](/ru/enterprise-server@3.22/pull-requests/how-tos/merge-and-close-pull-requests).

> \[!TIP]
> Синхронизация вилки обновляет только локальную копию репозитория. Чтобы обновить вилку ваш экземпляр GitHub Enterprise Server, необходимо [отправить изменения](/ru/enterprise-server@3.22/get-started/using-git/pushing-commits-to-a-remote-repository).