GitLab fork 远程公共仓库

Posted

技术标签:

【中文标题】GitLab fork 远程公共仓库【英文标题】:GitLab fork remote public repo 【发布时间】:2015-03-19 05:56:11 【问题描述】:

我的组织有一台专门用于安装 GitLab 的机器。我经常与其他公共项目(Drupal.org 和 Github)合作。除了拥有我们自己的开发和生产分支外,我还想在我们的 GitLab 上拥有一个分支,该分支将跟踪远程 Drupal 或 Github 项目。

希望它位于 GitLab 服务器(机器)上,因此开发人员不负责从公共远程跟踪和更新。

本质上,在“master”上跟踪分叉公共回购,内部分支“devel”和“prod”;开发人员只克隆内部开发分支。然后能够从远程拉到主控,然后根据需要合并到其他内部分支。这可以通过网络界面或钩子来完成吗?或...

按照Create a fork of public git repo for github 的答案,似乎需要一个脚本才能从公共远程拉到本地,然后推送到 GitLab 主机,并将脚本设置为 cron 作业。是吗?

【问题讨论】:

一旦你在你的 gitlab 服务器上 fork 公开 repo,你就有了自己的独立 repo。使用私有分叉作为参考存储库是一个好主意,以便您的团队通过在将更改提交到本地副本后合并更改来进行更新,但是您必须合并(通过不时合并)提交引入的任何进一步更改如果你希望它们出现在你的项目中,那么从你 fork 的那一刻起的公共 repo。检查此以获取有关如何合并两个远程存储库***.com/questions/1767980/… 的具体信息 我有同样的问题,但有一个额外的转折:我要分叉的远程仓库没有 http(s):// 访问权限,而只有 git:// 访问权限。是否可以在 GitLab 中创建一个只有 git:// 访问权限的远程仓库? 【参考方案1】:

也许你可以试试 GitLab 镜像功能: https://docs.gitlab.com/ee/workflow/repository_mirroring.html

它支持从远程仓库拉取:

https://docs.gitlab.com/ee/workflow/repository_mirroring.html#pulling-from-a-remote-repository-starter

【讨论】:

【参考方案2】:

Fork 只不过是一个添加了远程的新存储库

需要理解三个主要思想:

每个 Git 存储库都是一个独立的存储库 “fork”是存储库的花哨词,远程指向原始存储库 GitLab 只不过是文件系统上真实 Git 存储库的用户界面

因此,如果您坚持使用远程分支(git:// 或 http(s)://)在您的服务器上保持某些分支是最新的,您可以将新的远程添加到您的真实git 存储库(通常位于 /home/git/repositories,检查您的 gitlab.yml)并设置一个 cron 以从此类远程提取更改。

但是,如果拉动不是快进并且需要合并,很多事情可能会出错。

解决方案是获取遥控器并重置,但这次您的所有更改都将丢失。

最好全部手工完成

如果可能,更好的解决方案是花点时间手动拉取更改,检查一致性并推送到本地副本。

【讨论】:

以上是关于GitLab fork 远程公共仓库的主要内容,如果未能解决你的问题,请参考以下文章

使用gitlab时候 fork仓库不会实时从主仓库更新解决方案

GitLab本地远程更新已经fork的项目

git学习GitLab中如何批量删除本地以及远程的TAG标签

git学习GitLab中如何批量删除本地以及远程的TAG标签

gitlab 怎么通过第三方认证登录

怎么在gitlab上面创建远程仓库