是否可以沟通两个本地git-repos?

时间:2016-09-19 20:16:28

标签: git

我今天在涉及git repos的工作中遇到了一个非常奇怪的情况。我们的想法是拥有两个具有以下约束的存储库

本地-RepoA

  1. 包含我的所有源代码,例如ShareOk.cppShareNok.cpp
  2. 推送到http://remote-RepoA.git
  3. 本地-RepoB

    1. 应该只包含来自 RepoA 的文件,这些文件可以与其他人共享,在这种情况下只有ShareOk.cpp
    2. 在将更改推送到远程之前,需要做一些代码清理
    3. 推送到http://remote-RepoB.git
    4. 有没有办法去推动"从local-RepoAlocal-RepoB的某些文件进行代码清理,然后将更改推送到remote-RepoB

      这对我来说没有意义,但我被要求检查链接两个本地回购的方式。

      修改

      从下面提供的答案中,我认为我的描述并不完整,所以我会进一步扩展

      有两个发展小组。

      A组拥有所有源代码,仅适用于上游设置为http://repoA.git repoA 。所有的源代码都可能很乱,并且有未经测试的代码。

      A组希望将 B组代码从 repoA 提升到某一点/提交,这已知无法正常运行,干净且经过测试的代码。因此 A组希望能够通过上游http://repoB.git进入 repoB 此代码,保留与群组共享的文件的更改历史记录乙

      最后 B组只是来自http://repoB.git的克隆/拉取并检查代码编译并运行,然后他们用它做其他一些事情。

2 个答案:

答案 0 :(得分:1)

我怀疑将提交/文件从一个仓库推送到另一个仓库真的是你想要的。从提供的上下文中我无法确定这是否适用,但通常我会建议将Repo B作为您的上游(主要)回购并(公开)进行处理,就像您要对要共享的任何包或模块一样。

在RepoA中,您可以将RepoB设置为依赖关系,并通过扩展RepoB来应用任何自定义或修改,同时仅在RepoA中提交覆盖。

这也可以防止您必须“审查”要公开推送的文件或提交。

答案 1 :(得分:1)

  

A组希望从已知具有干净且经过测试的代码完美运行的repoA向Group B提供代码到达某一点/提交。因此,A组希望有一种方法可以将repoB放入上游http://repoB.git,此代码保留了与B组共享的文件的更改历史记录。

听起来repoB应该是repoA的裸克隆。然后你只需要管理从A中拉B的过程。

假设某个发布分支,或者指示A中的提交是B应该遵循的“已知良好”点的标记,您只需要在repoB目录中运行git pull KnownGoodPoint:master

这也假设B组中没有人推回repoB,所以你应该不允许这样做。