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

时间:2018-06-04 18:42:53

标签: git github gitlab

是否可以在github和gitlab上放置一个git repo? 因此,如果你在Github和Gitlab上推送它的远程仓库。

2 个答案:

答案 0 :(得分:4)

是。您可以为存储库创建镜像。 GitHub和Gitlab都有这个功能。

Gitlab documentation.

Github documentation

答案 1 :(得分:3)

你误解了Git是如何工作的。或内容托管如何运作。

首先,你的回购不在GitHub和GitLab上。您的仓库位于您的硬盘上,就在您克隆或创建它的位置。这是一个存储库。本地的。这是你工作的地方*)

在GitHub和GitLab上,您可以设置存储库的远程复制。然后,在对本地存储库执行某些操作之后,可以指示本地存储库将这些新工作发送到该远程副本。或者到另一个远程副本。或者在不同的地方保存50份远程拷贝。

第二个事实是,GitHub和GitLab 是分开的。事实上,有一个GitHub,但没有一个GitLab。有很多GitLabs,你甚至可以买一台服务器并托管你自己的GitLab。这只强调它们都是分开的。无论你发送给GitHub的是什么都不会神奇地出现在GitLab1上,也不会出现在GitLab2上,也不会出现(...)

第三个事实,它们都是分开的,但它们都允许你托管你的git仓库的副本。由于您可以指示您的本地存储库将内容发送到多个遥控器,因此您可以将它们全部同步。

但是,每次想要进行推送时将所有URL粘贴到所有服务器都会很麻烦,因此可以教您当地的git repo以了解远程位置并为您记住它们。这称为remotes,你可能已经看过它了:

git push origin master
          \        \
           \        branch to be pushed
            name of the remote

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

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个不同名称的遥控器。现在你可以:

git push remote-github master
git push remote-gitlab1 master

等等。这将有效 - 基本上,代码更改,提交,将它们推送到3+服务器,并且您在GitHub和GitLab"上有相同的东西。请记住,如果你并不孤单,如果你让别人分别在GitHub / GitLab上处理你的代码,那么每个人都需要同时以相同的顺序推送到所有的遥控器,否则它可能会很快发散。 / p>

即使他们被他们的名字记住,手动推送到2+遥控器也会有些麻烦。这就是recent Git versions allow to set multiple push URLs under single name of a remote

的原因

此外,Git存储库和一些Git托管,支持"触发器"或"钩子"。这些东西允许您设置每次发生事件时将执行的脚本。像提交或推送的东西。使用它可以指示您的托管,例如,在每次收到的推送时,推送到其他远程仓库。但是我不会覆盖它,在这里和现在,我认为你已经有足够的关键词来搜索了!

*)好吧,除了一些半自动化的东西,如PR / MR /评论/问题/等 - 但这是特定于您的工作流程并在托管网站上支持它。显然,由于站点是分开的,并且由于对功能的支持可能不同,在一个站点上执行的PR / MR / Reviews /../ etc不会神奇地转移到其他站点。如果特定功能是通过分支实现的,那么您可以通过一些钩子和脚本来同步它。否则,您需要为该网站找到合适的插件。或者,好吧,自己写吧。 IIRC,至少GitLab有一个API。