组合在git存储库中的子项目中增长的基础项目,git子模块或子树合并方法除外
将来有一些子项目:“项目1”、“项目2”等等 还有一个项目叫做“基础项目”,它是其他项目的基础。“基础项目”是一个内容管理系统(CMS) 所有项目都有自己的git存储库 “项目1”、“项目2”和其他项目使用“基础项目”来发展和壮大 git中有一些方法,如子模块或子treemerge。但似乎不适合这里。 不应将“基本项目”克隆到子目录中。它在根目录中。它在“项目1”或“项目2”中成长 当我在子项目中工作时,我必须能够将“基本项目”更改单独推送到它自己的存储库中,以获取其他子项目组合在git存储库中的子项目中增长的基础项目,git子模块或子树合并方法除外,git,combinations,git-submodules,repository,Git,Combinations,Git Submodules,Repository,将来有一些子项目:“项目1”、“项目2”等等 还有一个项目叫做“基础项目”,它是其他项目的基础。“基础项目”是一个内容管理系统(CMS) 所有项目都有自己的git存储库 “项目1”、“项目2”和其他项目使用“基础项目”来发展和壮大 git中有一些方法,如子模块或子treemerge。但似乎不适合这里。 不应将“基本项目”克隆到子目录中。它在根目录中。它在“项目1”或“项目2”中成长 当我在子项目中工作时,我必须能够将“基本项目”更改单独推送到它自己的存储库中,以获取其他子项目 我能做什么?子树合
我能做什么?子树合并或子模块用于:两个不同但一致的文件集组合在一起。
每一组文件都位于自己的目录中,因为它们可以单独分支或标记(子模块),也可以合并在一起(子树合并,同时保持获取自己历史记录的能力)。
不过,两者都需要一个单独的目录 但您所描述的(“
Base Project
”位于根目录中,生长在“project1
”或“project2
”)是关于一个:所有组件合并到一个大组件中:一个大文件集,它将始终作为一个单元一起发展。因此,每个项目可以有一个分支:
branch1
用于CMS-projet1
,branch2
用于CMS-project2
,等等
但是,如果您需要向原始(和单独的)回购协议报告projectx
特定的修改或CMS特定的修改,则在专用分支机构中进行所述特定更改,然后合并这些更改:
适用于影响branchp1
project1
适用于影响branchc1
CMS
将是从branch1
和branchp1
branchc1
- 从
到branchp1
repoproject1
- 从
到branchc1
repoCMS
CMS projectx
文件集中开发的常见历史报告回原始CMS
和projectx
回购协议
注意:如果您不想管理2个额外的分支,另一个解决方案是:
- 确保每次提交仅包括CMS修改或项目修改
- 留下有助于区分它们的提交消息(“
”,或“[CMS]我的CMS修改注释…
”[Project1]我的Project1修改注释…
- 使用导出为修补程序,只有正确的提交
A文件
应推送到branchp1
,B文件
应推送到branchc1
。将A文件
推送到其分支后,当尝试将B文件
提交到branchc1
时,它会使A文件
也推送到branchc1
。我在这里理解有问题…@Hallaji基本上,每次修改CMS时,你都会在branch1
上重新设置CMS分支branch1
,切换到它(签出),进行修改,提交,切换回branch1
并将branch1
合并到它。现在,我意识到它是复杂的,因此一个更简单的解决方案是继续执行branch1
,并根据每个提交的性质选择正确的提交到branchc1
或branchp1
(有关cherry picking的更多信息,请参阅)。想法仍然是:有两个分支记录CMS或特定于项目的提交。@Hallaji如果除了常规的branch1
之外还有这些分支,那么您可以将这些提交导出为补丁,并将它们应用于相应的存储库(CMS和project1
)。如果每个项目只有一个分支,那么不同性质的提交会混合在一起,这无助于将它们导出回初始回购。谢谢