推送镜像
引入于 13.5 版本:LFS 通过 HTTPS 支持。
推送镜像是一个下游仓库,它镜像 对上游仓库所做的提交。推送镜像被动地接收对上游仓库所做提交的副本。为防止镜像与上游仓库分叉,请勿将提交直接推送到下游镜像。改为将提交推送到上游仓库。
虽然拉取镜像定期从上游仓库检索更新,但推送镜像仅在以下情况下接收更改:
- 提交被推送到上游极狐GitLab 仓库。
- 管理员强制更新镜像。
当您将更改推送到上游仓库时,推送镜像会收到它:
- 在五分钟内。
- 在一分钟内,如果您启用 仅镜像受保护的分支。
在分支分叉的情况下,镜像的仓库部分会显示错误。
配置推送镜像
要为现有项目设置推送镜像:
- 在顶部栏上,选择 主菜单 > 项目 并找到您的项目。
- 在左侧边栏上,选择 设置 > 仓库。
- 展开 镜像仓库。
- 输入存储库 URL。
- 在 镜像方向 下拉列表中,选择 推送。
- 选择 验证方式。您可以使用密码或 SSH 密钥进行身份验证。
- 如有必要,请选择 仅镜像受保护的分支。
- 如果需要,选择保留分叉的 refs。
- 要保存配置,请选择 镜像仓库。
通过 API 配置推送镜像
您还可以通过远端镜像 API 创建和修改项目推送镜像。
保留分叉的 refs
默认情况下,如果远端(下游)镜像上的任何引用(分支或标签)与本地仓库不同,上游仓库将覆盖远端上的任何更改:
- 仓库将
main
和develop
分支镜像到远程。 - 远端镜像的
develop
添加了一个新的commit。 - 下一次推送更新远端镜像以匹配上游仓库。
- 远端镜像上添加到
develop
的新 commit 丢失了。
如果选择保留分叉的 refs,则更改的处理方式不同:
- 跳过远端镜像上
develop
分支的更新。 - 远端镜像上的
develop
分支保留了上游仓库不存在的提交。远端镜像中存在的任何 refs(而不是上游)保持不变。 - 更新标记为失败。
创建镜像后,只能通过远程镜像 API 修改保留分叉的 refs 的值。
设置一个推送镜像到另一个已激活 2FA 的实例
- 在目标实例上,创建一个具有
write_repository
作用域的个人访问令牌。 - 在源实例上:
- 使用以下格式输入 Git 存储库 URL:
https://oauth2@<destination host>/<your_gitlab_group_or_name>/<your_gitlab_project>.git
。 - 输入 密码。使用在目标实例上创建的 GitLab 个人访问令牌。
- 选择 镜像仓库。
- 使用以下格式输入 Git 存储库 URL: