Help us learn about your current experience with the documentation. Take the survey.

更新一个 fork

  • Tier: Free, Premium, Ultimate
  • Offering: GitLab.com, GitLab Self-Managed, GitLab Dedicated

Fork 是仓库及其所有分支的个人副本,你可以在你选择的命名空间中创建它。你可以使用 Fork 来向一个你没有访问权限的项目提出更改建议。更多信息,请参阅 Forking workflows

你也可以使用 GitLab UI 来更新一个 fork。

前置条件:

要从命令行更新你的 fork:

  1. 检查是否为你的 fork 配置了 upstream 远程仓库:

    1. 如果你还没有,请将你的 fork 克隆到本地。更多信息,请参阅 Clone a repository

    2. 查看你的 fork 的已配置远程仓库:

      git remote -v
    3. 如果你的 fork 没有指向原始仓库的远程仓库,使用以下示例之一来配置一个名为 upstream 的远程仓库:

      # 编辑 <upstream_url> 后,将任何仓库设置为你的上游
      git remote add upstream <upstream_url>
      
      # 将主要的 GitLab 仓库设置为你的上游
      git remote add upstream https://gitlab.com/gitlab-org/gitlab.git
  2. 更新你的 fork:

    1. 在你的本地副本中,检出 默认分支。 将 main 替换为你的默认分支名称:

      git checkout main

      如果 Git 发现未暂存的更改,请在继续之前 提交或暂存 它们。

    2. 从上游仓库获取更改:

      git fetch upstream
    3. 将更改拉取到你的 fork 中。将 main 替换为你正在更新的分支名称:

      git pull upstream main
    4. 将更改推送到服务器上的你的 fork 仓库:

      git push origin main

跨 fork 协作

GitLab 允许上游项目维护者和 fork 所有者之间进行协作。更多信息,请参阅:

作为上游成员推送到 fork

如果满足以下条件,你可以直接推送到 forked 仓库的分支:

  • 合并请求的作者启用了来自上游成员的贡献。
  • 你对上游项目至少拥有 Developer 角色。

在以下示例中:

  • forked 仓库的 URL 是 git@gitlab.com:contributor/forked-project.git
  • 合并请求的分支是 fork-branch

要更改或向贡献者的合并请求添加提交:

  1. 在左侧边栏,选择 Search or go to 并找到你的项目。

  2. 转到 Code > Merge requests 并找到合并请求。

  3. 在右上角,选择 Code,然后选择 Check out branch

  4. 在对话框中,选择 Copy ( copy-to-clipboard )。

  5. 在你的终端中,转到仓库的克隆版本,并粘贴命令。例如:

    git fetch "git@gitlab.com:contributor/forked-project.git" 'fork-branch'
    git checkout -b 'contributor/fork-branch' FETCH_HEAD

    这些命令从 forked 项目获取分支,并为你创建一个本地分支供你使用。

  6. 对分支的本地副本进行更改,然后提交它们。

  7. 将你的本地更改推送到 forked 项目。以下命令将本地分支 contributor/fork-branch 推送到 git@gitlab.com:contributor/forked-project.git 仓库的 fork-branch 分支:

    git push git@gitlab.com:contributor/forked-project.git contributor/fork-branch:fork-branch

    如果你修改或压缩了任何提交,你必须使用 git push --force。请谨慎操作,因为此命令会重写提交历史。

    git push --force git@gitlab.com:contributor/forked-project.git contributor/fork-branch:fork-branch

    冒号 (:) 指定了源分支和目标分支。格式为:

    git push <forked_repository_git_url> <local_branch>:<fork_branch>

相关主题