每个repo分支具有不同分支的GitModules

时间:2018-08-08 16:57:18

标签: git

我有一个RepoA。它具有分支master和暂存。 存储库B是一个子模块,还将具有“分支机构”母版和暂存。

我希望Repo A主机指向Repo B主机,而Repo A暂存要指向Repo B主机。

不幸的是,.gitmodules文件存在冲突,并且对于CI / CD的构建和发布管道而言,它需要在项目中具有.gitmodules文件。

现在.gitmodules文件,

.d.ts

和submodules文件夹不兼容。

.js

1 个答案:

答案 0 :(得分:0)

branch =设置中甚至没有出现.gitmodules要求,更不用说它包含您想要的名称了。设置纯粹是为了您的方便。如果您发现以一种方式设置它,或者根本不以其他方式设置它,或者取消设置它,则很麻烦。

每个子模块应提取的特定提交存储为每个提交的tree对象内的 gitlink 条目。因此,如果在staging上的最新提交中有一个tree表示子模块REPOB应该在a7003f003b196ce1d5677779a7c9cb1447516c79上,并且您的CI / CD进程(或者我应该说,无论运行什么软件),将该提交检出,然后运行git submodule update,Git将在该子模块中检出提交a7003f003b196ce1d5677779a7c9cb1447516c79。如果对master的最新提交有一个tree表示子模块REPOB应该在4b237d06f04d383e28f1582e320d1bc5e2637800上,则当您的CI / CD进程运行git submodule update时,Git将检出提交{{ 1}}。

当您要为 4b237d06f04d383e28f1582e320d1bc5e2637800 master进行新提交时,请确保要用于 make 该新提交作为其子模块REPOB的gitlink条目,具有您希望CI / CD进程在运行staging时获取的任何提交哈希ID。这就是git submodule update便利设置的来源:使用正确的名称可能会很方便。但这可能会引起合并冲突,因此很不方便。选择您认为最方便的便利; Git不会同时给你们两个。

如果您的CI / CD软件自己进行新的提交,请弄清楚 it 如何控制提交时的 its Git存储库索引中的内容。它(您的CI / CD软件)将需要确保其Git存储库的索引具有正确的哈希ID。这可能决定哪种便利最方便。