给定项目目录中的git存储库树,例如,
Projects/
+A/
|+.git/
+B/
|+.git我想要设置一个git存储库Projects.git,它不跟踪项目的内容,而只跟踪它们的存在和状态。克隆这个存储库的人只应该拥有一个未克隆的存储库( A、B等)的骨架,并单独激活它们是否保持同步。典型的工作流如下所示:
git clone server:Projects.gitA,该项目也克隆它git-push/pull,无论是在Projects/还是Projects/A中,都应该更新A.git和Projects.git关于A的信息。任何与B相关的信息都应该被忽略,因为它是非活动的和本地为空的。B,并克隆它git-push/pull中的任何Projects在A和B中都应该这样做,而推/拉A不应该影响B。A,该项目(在验证A.git不需要git-push之后)清空本地目录A,对Project.git没有影响如何才能最好地处理这一问题?我目前的方法将是一些钩子魔术,但我还不太熟悉git子模,看它是否可以用子模块实现,或者我是否需要使用其他解决方案。
发布于 2019-08-08 00:54:08
“元”工具对此非常有用。
你可以在npm:https://www.npmjs.com/package/meta上找到它
您可以使用它来克隆一个元回购和所有子回购在一次,这是伟大的。
然后,您使用它将操作应用于您的所有子回购(如提取元回购和所有子回购):
cd my-repo
meta git pull这里有一篇文章,帮助您开始使用“meta”:https://medium.com/@patrickleet/mono-repo-or-multi-repo-why-choose-one-when-you-can-have-both-e9c77bd0c668
发布于 2012-10-08 10:32:10
这确实是子模的目的:
跟踪每个子exact的确切配置(即精确提交SHA1)。
正如"如何在一行中对所有子模块进行克隆、递归和签出?“中详细介绍的那样,您可以在一个命令中克隆您的父级repo及其所有子模块。
正如在"子模的真性质“中解释的那样,您可以修改它们,前提是您意识到每个子模块都处于分离头模式(首先需要签出本地分支),并且需要首先提交和推送子模块,然后再回到父回购、提交和推到那里(记录新的配置,即新的子模块SHA1)。
您可以删除子模块目录,而不会损坏对该子模块的父repo引用。
这听起来有点像我想要的,但是在这种情况下,分离的头是无用的--当我克隆一个子模块时,它应该在它的主头上。
基本上,我正在寻找一种方法,使所有项目的本地索引可用,而不必单独克隆它们,和一个“同步所有项目,目前是克隆”的全部一体的命令。
我建议看了吉特奴隶
Git奴隶创建了一组相关的存储库-一个超级项目存储库和一些从存储库-所有这些存储库都是同时开发的,所有git操作通常都应该在这些存储库上运行; 因此,当您分支时,项目中的每个存储库依次进行分支。 类似地,当您提交、推送、拉、合并、标记、签出、状态、日志等时,每个git命令将依次在超级项目和所有从存储库上运行。
发布于 2020-02-28 08:27:29
为什么不使用git已经提供的内容:
git子模块--静默预测--递归
git submodule foreach git checkout develop
git submodule foreach git commit
git submodule foreach git pushhttps://stackoverflow.com/questions/12779197
复制相似问题