假设我有一个包含N个子模块的超级项目。我按照本指南创建的:Git Submodule Tutorial
所以我有所有子模块的公共存储库以及超级项目的公共存储库,所有这些都在远程主机中:machine1/path/to/public/repos.git
。这些我会打电话给我的公共回购。
现在,用户X从我的公共仓库克隆超级项目并将所有内容提取到他的私人仓库。其本地.git/config
和.gitmodules
中的所有引用都指向我的公开回购。
我希望用户X拥有自己的公共存储库,以便我们可以使用此处描述的分布式工作流:Git Distributed Workflows
这样,用户X和我可以将我们的本地更改推送到我们自己的公共回购,然后从彼此的公共回购中提取更改。我想避免我们两个人不得不推进同一个公共回购。
由于X的本地回购中的.gitmodules
指向我的公共回购,X需要更改ulr,因此他们指向他的公共回购。请记住.gitmodules是提交的,所以如果X提交& amp;我们就会遇到冲突。在修改它以引用他的公共回购之后发布.gitmodules
然后我从他的公共回购中提取变更(我的本地.gitmodules
将引用他的公共回购而不是我的那不是期望的结果。)
那么你认为什么是最好的选择:
.gitmodules
并将其添加到.gitignore
,以便不再对其进行跟踪。 .gitmodules
不受影响。我不确定为什么,但这对我来说似乎不是一个好主意。git --update-index assume-unchanged .gitmodules
如果运行.gitmodules
或丢弃所有未跟踪的文件,则任何这些选项都会导致git clean
被清除。
如何保持X .gitmodules
中的更改永久引用他自己的公共回购,而不必担心意外擦除配置或拉出不需要的更改?
答案 0 :(得分:1)
您可以通过向您的submoules添加其他遥控器来实现此目的。此外,当您添加--init选项时,来自包含repo的git子模块远程URL仅会同步。没有什么能阻止你做一个git子模块添加,更新,初始化然后更改该远程的repo中的url。除非添加--init opition。
,否则后续子模块更新不会更改该URL