是否有可能在Github和Gitlab上放置一个Git仓库?

Is it possible to have one Git repo placed on Github and Gitlab?

是否可以在GitHub和GitLab上同时放置一个Git回购?所以如果你推动一个远程回购,它都在GitHub和GitLab上。


对。您可以为存储库创建镜像。GitHub和Gitlab都具有此功能。

Gitlab文档。

GitHub文档


你误解了Git的工作原理。或者内容托管的工作方式。

首先,你的回购协议既不在Github上,也不在Gitlab上。您的repo在硬盘上,就在您克隆或创建它的地方。这是一个存储库。本地的。这是你工作的地方*)

在GitHub和Gitlab上,您可以设置存储库的远程副本。然后,在您对本地回购做了一些工作之后,您可以指示本地回购将这些新的工作部分发送到远程副本。或者到另一个远程副本。或保存在不同地方的50份远程拷贝。

第二个事实是,Github和Gitlab是分开的。实际上,有一个GitHub,但是没有一个GitLab。外面有很多Gitlab,你甚至可以买一台服务器并托管你自己的Gitlab。这只是强调它们都是独立的。无论你发到GitHub的是什么,都不会神奇地出现在Gitlab1、Gitlab2或(..)上。

第三个事实是,它们都是独立的,但它们都允许您托管Git回购的副本。由于您可以指示本地repo将事情发送到多个远程设备,因此您可以使它们全部同步。

但是,每次你想推的时候都将所有的URL粘贴到所有的服务器上是很麻烦的,所以你的本地Git报告可以教你知道远程位置并记住它们。这个叫remotes,你可能已经看到它的形式了:

1
2
3
4
git push origin master
          \        \
           \        branch to be pushed
            name of the remote

origin是您使用的单个远程服务器的典型名称。但是如果你想拥有很多,你可能需要设置一些有意义的名字,比如:

1
2
3
4
git remote add remote-github (url-to-repo-on-github)
git remote add remote-gitlab1 (url-to-repo-on-gitlab1)
git remote add remote-gitlab2 (url-to-repo-on-gitlab2)
...

这将设置3个以上具有不同名称的遥控器。现在您可以:

1
2
git push remote-github master
git push remote-gitlab1 master

等等。这是可行的——基本上,进行代码更改、提交、将它们推送到3+服务器上,您就拥有了"GitHub和GitLab上的相同功能"。记住,如果你不是一个人,如果你让别人单独在Github/Gitlab上处理你的代码,每个人都需要同时按相同的顺序推到所有的远程设备,否则它会很快分开。

手动推到2+遥控器也可能有点麻烦,即使他们的名字被记住。这就是为什么最近的Git版本允许在一个远程服务器的单一名称下设置多个推送URL。

此外,Git存储库和一些Git主机支持"触发器"或"挂钩"。这些事情允许您设置一个脚本,每次发生事情时都会执行该脚本。像承诺或推。例如,使用它,您可以指示宿主在每次接收到推送时对另一个远程回购执行推送。但我不会介绍它,现在在这里,我认为您已经有足够的关键字来搜索了!

*)好吧,除了一些半自动化的东西,比如prs/mrs/reviews/issues/etc——但是这是特定于您的工作流和在宿主站点上对它的支持。显然,由于站点是独立的,而且对功能的支持可能不同,在一个站点上执行的prs/mrs/reviews/。/etc不会神奇地转移到其他站点。如果特定功能是通过分支实现的,那么您可以通过一些挂钩和脚本来同步。否则,您需要为该站点找到一个合适的插件。或者,嗯,你自己写。IIRC,至少Gitlab有一个API。