Skip to main content

同步分支

使用 Web 界面、GitHub CLI 或命令行将分支存储库与其上游存储库同步。

谁可以使用此功能?

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

从 Web UI 同步分叉分支

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

  2. 在文件列表上方,选择“Sync fork”下拉菜单。

    分叉主页的屏幕截图。 标有同步图标和“同步叉”的下拉菜单以深橙色框出。

  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://HOSTNAME/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(-)
    

    如果您的本地分支有独有提交,您可能需要解决冲突。 请参阅“合并、关闭拉取请求”。

提示

同步您的 fork 只会更新存储库的本地副本。 若要更新分支 你的 GitHub Enterprise Server 实例,必须 推送更改