我用了大约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)
答案 0 :(得分:2)
git rm --cached my_subprojects # no trailing /
唯一的另一个命令是git submodule deinit my_subprojects
来处理.gitmodules
,.git/modules
和git/config
。
答案 1 :(得分:1)
如果您想保留现有文件,请不要忘记从每个子模块的路径中删除.git
文件。
子模块在以下位置定义:
.gitmodules
(不是.gitsubmodules
,如上所述).git/modules
(实际存储库)path/to/module/.git
(指向提交ID的占位符)git/config
如果你已经清理了所有这些,那么你应该没问题,但确保分支/合并没有咬你 - .gitmodules
和path/to/module/.git
受版本控制,所以可能会有所不同分支。
您可能会或可能不关心的是您要尝试做的另一个问题 - 您不会保留子模块的任何提交历史记录。您可以通过将每个子模块添加为远程,然后在适当的远程分支中合并来保留提交历史记录。