让upper
、left
和right
作为目录,如下图所示。
upper
├── left
└── right
问题
我如何最好地管理这些git作为本地git仓库
upper
、left
和right
具有单独的GIT储存库,- 来自X1 M6 N1 X和X1 M7 N1 X的储存库的历史可以以某种方式传播到X1 M8 N1 X的储存库,
- 来自储存库X1 M9 N1 X的历史可以以某种方式传播到X1 M10 N1 X和X1 M11 N1 X的储存库,
后者两者优选地在不改变相应的工作树upper
、left
和right
的情况下完成?
示例
为了清楚起见,把upper
、left
和right
的git仓库分别称为upper.git
、left.git
和right.git
(你可以把它们想象成完全在上述目录结构之外的裸仓库)。
- 我在
left
上工作并致力于left.git
;那么 - 我以某种方式将历史从
left.git
传播到upper.git
,因此后者知道我所做的所有工作;那么 - 我在
upper
上工作,有时在right
上工作文件,并提交到upper.git
;那么 - 我以某种方式将历史从
upper.git
传播到right.git
,因此后者知道我对right
中的文件所做的所有工作。
想法
一开始我以为我可以通过使用git子树来实现这一点,但是当我尝试使用git subtree -P left add ⟨left.git⟩ master
在upper
中包含left
的仓库时,我--也许并不意外--得到:
fatal: prefix 'left' already exists.
我在stackoverflow上搜索过类似的问题,关于嵌套仓库,但我看不出它们与我的问题有什么关系。我可能对git子树不够了解,也可能我的头脑太简单了。我没有深入研究git子模块;在我看来,他们是为了别的事情。
1条答案
按热度按时间ecr0jaav1#
目前还不清楚这种结构的最终目标是什么,如果您只打算将所有这些repos保持在本地,则不需要子模块。
如果你想让upper repo(而不是folder)包含所有来自内部repos(独立的提交树)的修改,你可以尝试here中的一些答案。
另一方面,我看不出有什么理由这样做.如果你只是想把文件夹的变化保存在不同的存储库中-创建独立的存储库,并这样对待它们.在这种情况下
upper.git
存储库(而不是文件夹)将忽略内部存储库的所有变化.每个内部存储库将跟踪它自己的文件夹.