我今天在涉及git repos的工作中遇到了一个非常奇怪的情况。我们的想法是拥有两个具有以下约束的存储库
本地-RepoA
ShareOk.cpp
和ShareNok.cpp
本地-RepoB
ShareOk.cpp
有没有办法去推动"从local-RepoA
到local-RepoB
的某些文件进行代码清理,然后将更改推送到remote-RepoB
?
这对我来说没有意义,但我被要求检查链接两个本地回购的方式。
修改
从下面提供的答案中,我认为我的描述并不完整,所以我会进一步扩展
有两个发展小组。
A组拥有所有源代码,仅适用于上游设置为http://repoA.git
的 repoA 。所有的源代码都可能很乱,并且有未经测试的代码。
A组希望将 B组代码从 repoA 提升到某一点/提交,这已知无法正常运行,干净且经过测试的代码。因此 A组希望能够通过上游http://repoB.git
进入 repoB 此代码,保留与群组共享的文件的更改历史记录乙
最后 B组只是来自http://repoB.git
的克隆/拉取并检查代码编译并运行,然后他们用它做其他一些事情。
答案 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,所以你应该不允许这样做。