跳至主要内容

同步分支

同步仓库的分支,使其与上游仓库保持同步。

谁可以使用此功能?

具有分叉仓库写入权限的人员可以将分叉同步到上游仓库。

平台导航

从 Web UI 同步分叉分支

  1. 在 GitHub 上,导航到要与上游仓库同步的分叉仓库的主页。

  2. 在文件列表上方,选择 **同步分叉** 下拉菜单。

    Screenshot of the main page of a fork. A dropdown menu, labeled with a sync icon and "Sync fork," is outlined in dark orange.

  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. 检出您 fork 的本地默认分支 - 在这种情况下,我们使用 main

    $ git checkout main
    > Switched to branch 'main'
    
  5. 将上游默认分支(在本例中为 upstream/main)中的更改合并到您的本地默认分支中。这将使您的 fork 的默认分支与上游仓库同步,而不会丢失您的本地更改。

    $ 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(-)
    

    如果您的本地分支有唯一的提交,您可能需要解决冲突。有关更多信息,请参阅 "解决合并冲突。"。

提示:同步您的 fork 仅更新您本地仓库的副本。要更新 GitHub.com 上的 fork,您必须 推送您的更改