未来会有一些子项目:“项目1”、“项目2”等等。
另外,还有一个项目叫做“基础项目”,它是其他项目的基础。“基础项目”是一个内容管理系统(CMS)。
所有项目都有自己的git存储库。
“项目1”、“项目2”和其他人使用“基础项目”来发展和增长。
在git中有一些方法,比如submodule或subtreemerge。但似乎不适合这里。“基本项目”不应该克隆到子目录中。它在根目录中。它在“项目1”或“项目2”中成长...
当我在子项目中工作时,我必须能够将“基础项目”更改单独推送到它自己的存储库,以获取其他子项目。
我能做什么?
发布于 2012-11-25 20:49:09
子树合并或子模块用于:组合在一起的两组不同但连贯的文件。
每组文件都在自己的目录中,因为它们可以单独分支或标记(子模块),也可以组合在一起(子树合并,同时保留获取自己的历史记录的能力)。
不过,这两者都需要单独的目录。
但您所描述的("Base Project“在根目录中,在"project 1”或“project 2”中增长)是关于:所有组件合并到一个大型组件中:一个大型文件集,它们将始终作为一个单元一起发展。
因此每个项目可以有一个分支:branch1用于CMS-projet1,branch2用于CMS-project2,依此类推。
但是,如果您需要将projectx-specific修改或特定于CMS的修改报告回其原始(和单独的)存储库,则将在专用分支中进行上述特定更改,然后将这些更改合并为
branchp1表示影响project1branchc1的更改,表示影响CMSbranch1的更改是branchp1和branchc1合并的结果
(branch2也是如此)
然后,可以将这些更改导出为patches
branchp1 to project1 repobranchc1 to CMS repo不方便的是,Git不会记住已经合并回原始repos的内容,但这将允许您将在CMS-projectx文件集中开发的公共历史记录报告回原始CMS和projectx repos。
注意:如果您不想管理额外的2个分支,另一个解决方案是:
确保每次提交只包括内容管理系统修改或项目modification
[CMS] my CMS modification comment...",或"[Project1] my project1 modification comment..."
git-extract-patches to export as patches modificationhttps://stackoverflow.com/questions/13539636
复制相似问题