Skip to main content

同步复刻

同步仓库的复刻以通过上游仓库使其保持最新。

谁可以使用此功能?

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

Platform navigation

从 Web UI 同步分叉分支

  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 上更新分支,必须推送更改