跳至主要内容

同步分支

同步存储库的分支,使其与上游存储库保持最新状态。

谁可以使用此功能?

具有已分叉存储库的写访问权限的人员可以将分支与上游存储库同步。

平台导航

从 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,你必须 推送你的更改