[英]git - Including submodules into the main repository
大约6个月后,我将子模块用于与开发团队一起开发的子项目以及一个主项目。
- v-- Repository (developer(s)) --v
- Main project (dev team)
- Sub project 1 (me)
- Sub project 2 (me)
由于种种原因,我现在想将我的子项目视为主存储库中的常规文件。
因此,在子项目之一中进行修改...
问题是如何禁用这些子模块 ?
我的意思是禁用而不是删除,因为我需要主存储库中的文件
这是我所做的:
.gitsubmodule
.git/config
删除了子模块部分 rm --cached my_subprojects
git add/commit/push
现在,当我尝试将其合并时,子项目似乎仍被视为子模块,正如我仍然看到的那样
modified: Sub project 1 (new commits)
modified: Sub project 2 (new commits)
您仍然需要删除gitlink(索引中的特殊条目,该条目将文件夹标记为子模块,并记录该子模块的SHA1)
git rm --cached my_subprojects # no trailing /
唯一的其他命令是git submodule deinit my_subprojects
,它负责.gitmodules
, .git/modules
和git/config
。
然后,您可以将my_subprojects
库添加为子树 。
如果要保留现有文件,请不要忘记从每个子模块的路径中删除.git
文件。
子模块在以下位置定义:
.gitmodules
(不是您上面.gitsubmodules
) .git/modules
(实际存储库) path/to/module/.git
(占位符,指向提交ID) git/config
如果您已经清理完所有内容,那么应该没问题,但是请确保分支/合并不会对您.gitmodules
和path/to/module/.git
受版本控制,因此在不同分支上可能有所不同。
您尝试执行的操作可能会或可能不会在意另一个问题-您将不会保留子模块的任何提交历史记录。 您可以通过以下方式保存提交历史记录:将每个子模块添加为远程模块,然后合并到适当的远程分支中。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.