推送镜像

引入于 13.5 版本:LFS 通过 HTTPS 支持。

推送镜像是一个下游仓库,它镜像 对上游仓库所做的提交。推送镜像被动地接收对上游仓库所做提交的副本。为防止镜像与上游仓库分叉,请勿将提交直接推送到下游镜像。改为将提交推送到上游仓库。

虽然拉取镜像定期从上游仓库检索更新,但推送镜像仅在以下情况下接收更改:

当您将更改推送到上游仓库时,推送镜像会收到它:

  • 在五分钟内。
  • 在一分钟内,如果您启用 仅镜像受保护的分支

在分支分叉的情况下,镜像的仓库部分会显示错误。

配置推送镜像

要为现有项目设置推送镜像:

  1. 在顶部栏上,选择 主菜单 > 项目 并找到您的项目。
  2. 在左侧边栏上,选择 设置 > 仓库
  3. 展开 镜像仓库
  4. 输入存储库 URL。
  5. 镜像方向 下拉列表中,选择 推送
  6. 选择 验证方式。您可以使用密码或 SSH 密钥进行身份验证。
  7. 如有必要,请选择 仅镜像受保护的分支
  8. 如果需要,选择保留分叉的 refs
  9. 要保存配置,请选择 镜像仓库

通过 API 配置推送镜像

您还可以通过远端镜像 API 创建和修改项目推送镜像。

保留分叉的 refs

默认情况下,如果远端(下游)镜像上的任何引用(分支或标签)与本地仓库不同,上游仓库将覆盖远端上的任何更改:

  1. 仓库将 maindevelop 分支镜像到远程。
  2. 远端镜像的 develop 添加了一个新的commit。
  3. 下一次推送更新远端镜像以匹配上游仓库。
  4. 远端镜像上添加到 develop 的新 commit 丢失了。

如果选择保留分叉的 refs,则更改的处理方式不同:

  1. 跳过远端镜像上 develop 分支的更新。
  2. 远端镜像上的 develop 分支保留了上游仓库不存在的提交。远端镜像中存在的任何 refs(而不是上游)保持不变。
  3. 更新标记为失败。

创建镜像后,只能通过远程镜像 API 修改保留分叉的 refs 的值。

设置一个推送镜像到另一个已激活 2FA 的实例

  1. 在目标实例上,创建一个具有 write_repository 作用域的个人访问令牌
  2. 在源实例上:
    1. 使用以下格式输入 Git 存储库 URLhttps://oauth2@<destination host>/<your_gitlab_group_or_name>/<your_gitlab_project>.git
    2. 输入 密码。使用在目标实例上创建的 GitLab 个人访问令牌。
    3. 选择 镜像仓库