Skip to main content

同步复刻

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

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

从 web UI 同步复刻分支

  1. 在 GitHub Enterprise Server 上,导航到您想要与上游版本库同步的复刻仓库主页。
  2. Select the Fetch upstream dropdown. "Fetch upstream(提取上游)"下拉菜单
  3. 查看上游仓库中有关提交的细节,然后单击“提取并合并”。 "Fetch and merge" button

如果上游仓库的更改导致冲突,GitHub 将提示您创建拉取请求以解决冲突。

使用 GitHub CLI 同步复刻分支

GitHub CLI 是用于从计算机的命令行使用 GitHub 的开源工具。 从命令行操作时,您可以使用 GitHub CLI 来节省时间并避免切换上下文。 要了解 GitHub CLI 的更多信息,请参阅“关于 GitHub CLI”。

要从其父级更新远程复刻,请使用 gh repo sync -b BRANCHNAME 子命令,并提供复刻和分支名称作为参数。

$ gh repo sync owner/cli-fork -b BRANCHNAME

如果来自上游存储库的更改导致冲突,则 GitHub CLI 无法同步。 您可以设置 -force 标志以覆盖目标分支。

从命令行同步复刻分支

必须在 Git 中配置指向上游仓库的远程仓库,然后才能将您的复刻与上游仓库同步。

  1. 打开 Terminal(终端)Terminal(终端)Git Bash

  2. 将当前工作目录更改为您的本地仓库。

  3. 从上游仓库获取分支及其各自的提交。 对 BRANCHNAME 的提交将存储在本地分支 upstream/BRANCHNAME 中。

    $ 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://主机名/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 Enterprise Server 实例 上更新复刻,您必须推送更改