【发布时间】:2024-01-03 04:33:01
【问题描述】:
我有一个超级项目,我在其中添加了许多项目作为子模块。这些项目是微服务架构的一部分。 使用带有(微服务)项目作为子模块添加的超级项目的想法是能够在单个存储库中获取所有项目。
另一个用例是跟踪所有项目的变化。 想法是对超级项目进行分支,这样每个分支都会在给定时间创建所有项目的“快照”。
但是,我发现每当我创建一个新分支并更新子模块 (git submodules update --remote) 时,超级项目的所有分支都会更新。这是意料之中的,因为子模块只是原始项目的链接。
现在我的问题是,我有没有为超级项目拍摄快照的策略?我们可以分支单个项目的方式,对于子模块超级项目有这样的方式吗?
谢谢。
【问题讨论】:
-
"每当我创建一个新分支并更新子模块 (
git submodules update --remote) 时,超级项目的所有分支都会更新。这是意料之中的“当然不会。 AFAIU 在超级项目上切换分支时,您不会使用git submodule update将子模块与超级项目的当前状态同步;你应该。我在post-checkout钩子里做。在最近的 Git 中,可以配置为自动执行此操作。或使用git checkout --recurse-submodules更改分支。 -
谢谢@phd 不幸的是,这似乎不起作用。我没有对超级项目中的子模块进行任何更改。我将超级项目用作存储库的集合,并且我想使用超级项目的分支作为所有项目在特定时间提交的快照。每当我在超级项目中创建一个新分支并执行
submodule update --remote或submodule foreach git pull时,它会将所有以前的超级项目分支更新为子模块的最新提交。 -
我尝试创建
orphan分支并将分支设置为--unset-upstream,但超级项目分支仍在不断更新。 -
git submodule updatewithout--remoteorgit checkout --recurse-submodules更新子模块到超级项目中记住的提交。
标签: git git-branch git-submodules