使用Git,子树合并具有子模块的外部项目的最佳方法是什么?

时间:2009-03-13 23:56:15

标签: git version-control git-submodules subtree

我正在使用Git存储库来处理与我正在开发的网站相关的所有内容。存储库包含与站点相关的所有文件,包括文档,模型,原始分层图像等,以及我放在www子目录中的Web根目录。

我正准备开始整合我选择用于项目其余部分的CMS; CMS是一个开源项目,也使用Git进行管理(如果重要的话,托管在GitHub上)。显然,CMS需要位于www子目录中,但它不会是唯一存在的东西 - 会有CMS文件,图像,CMS模板等等。因此,我选择使用子树合并策略将外部项目添加到我的存储库。因为我可能在某个时候想要修改原始项目并提供更改,我已经从GitHub克隆了CMS存储库并从我的克隆中完成了子树合并。

问题是,外部项目(即CMS)具有我想要包含的子模块。确保子模块集成到主项目中的最佳方法是什么?我是否必须为每个子模块进行子树合并?

我不太可能想要修改子模块,但我可能会有一两个。

2 个答案:

答案 0 :(得分:5)

更简单的方法是进行子树合并(以及随后再次拆分,以便您可以向上游提交补丁)是尝试实验git subtree工具。

答案 1 :(得分:1)

Git submodules包含另一个项目的特定结帐,并且不会自动保持最新状态。因此,处理CMS子模块的最简单方法可能是跟踪它们来自远程分支的存储库。这样,您就可以随时了解子模块来自项目的更改。

使用子树合并使得将更改提交回CMS项目变得更加复杂(或许 finicky 是正确的词);如果您希望提交许多更改,也许可以编写脚本。

相关问题