如何将两个 git 存储库作为一个存储库进行管理,但又保持独立?
Posted
技术标签:
【中文标题】如何将两个 git 存储库作为一个存储库进行管理,但又保持独立?【英文标题】:How to manage two git repos as a single repo, yet stay separate? 【发布时间】:2021-12-01 07:40:03 【问题描述】:我已经看到其他关于此的问题,但无法将它们与相同。
我有一个从GitHub
克隆的主题,它成为master
分支。
然后我在最初克隆的主题中为我的网页内容创建一个新的本地分支,并且我想将我的页面内容检查到我自己在 GitLab 上的存储库中,因此我为内容分支添加了远程存储库。此时主遥控器与分支遥控器不同。
通过不将我的内容分支合并到主控,我总是可以从更新网络主题的主控远程拉取,然后切换到内容分支并开发/更新我的内容。所以它们是分开的,没有合并的意图。
然后问题就变成了……为了运行GitLab Pages
,站点是从主分支生成的。但是我无法将我的内容分支合并到主分支 1)因为主分支有指向其他地方的远程仓库(原始 GitHub 主题仓库),以及 2)如果我可以从主分支中提取更新,它将覆盖我的内容分支中的更改.
所以我的要求是:
1) I can keep the remote theme seperate from my own content.
2) Add my own content to the theme and develop.
2) Join the theme and the content into a repo on GitLab for Pages to work.
3) Later update just the theme, and then overlay my content on the new theme and continue to develop.
有人想过如何正确组织这个吗?
【问题讨论】:
没有什么能阻止你的 GitLab 主分支与你的 GutHub 主分支不同。我认为您只需将GitHub/master
合并到GitLab/develop
中,就像在页面上工作一样,然后将GitLab/develop
合并到GitLab/master
以发布到GitLab Pages。
在您的沙箱中创建一个名为 publish
的本地分支,将 GitLab/master
作为其上游,然后合并到 publish
并推送它应该会更新您的 GitLab 页面。
【参考方案1】:
如果我正确理解您的情况,发布到您的 GitLab 页面需要将发布就绪版本推送到您的 GitLab 存储库中,名称为 master
。
为了实现这一点,您需要记住的是,您的 GitHub 和 GitLab 存储库上的 master
分支不需要相关,即使您有一个指向两个遥控器的沙箱,正如您所描述的那样.
要创建一个本地分支,我们将其命名为publish
,它指向您GitLab 的master
分支,并将其与您的模板在GitHub 上的主分支区分开来,您可以这样做:
git checkout develop
git checkout -b publish
git branch -u gitlab/master
现在,当您在本地分支 publish
上并将所有内容合并到您希望发布的状态中时,运行 git push
它将使用您本地的 publish
分支更新 gitlab/master
。
假设:
您在 GitLab 上调用了您的第二个遥控器,gitlab
,例如,通过运行:
git remote add gitlab URL_TO_YOUR_GITLAB_REPO
gitlab
遥控器上已经有一个 master
分支。
您之前已从 gitlab
获取,例如,通过运行 git fetch gitlab
,以便您的沙盒具有对 gitlab/master
的引用。
【讨论】:
让我看看我是否理解正确。在这种情况下,我创建了一个空仓库,然后创建了三个分支(称为主题、开发和发布)。然后进入发布和1)合并主题,然后2)合并内容,然后推送到GitLab master? 是的,听起来不错。theme
可能会跟踪 GitHub 主分支。我不确定您希望 content
分支住在哪里,但我在回答中称它为 develop
。如果您希望主题、内容和发布回购都分开,它甚至可以在第三个回购中。我的回答中的publish
就像你说的那样,所有内容都合并发布。
问题:您是否曾经将theme
合并到content
中,或者两者完全独立,只组装到publish
中?无论哪种方式,我的答案应该仍然有效。
我只将内容(开发)合并(覆盖)到主题上。该主题位于 GitHub 上的远程仓库中。我抓住它,然后进行更改,但这些更改(开发)是独立的(因为它们在本地运行时需要与在 GitLab Pages 中运行时不同的设置)。否则,主题更新会覆盖我的开发。我正在处理它。以上是关于如何将两个 git 存储库作为一个存储库进行管理,但又保持独立?的主要内容,如果未能解决你的问题,请参考以下文章