dac*_*ngy 22 git git-submodules
该.gitmodule文件仅指定模块存储库URL.怎么git submodule知道要下载哪个版本?它似乎总是检查出最新版本.那么,开发人员如何确保主项目和子模块之间的兼容性?
Von*_*onC 26
您的子模块表示为具有特殊模式的特殊条目(称为gitlink,请参阅" 不带子模块的嵌套git存储库? "):(
请参阅" 通过git子模块提交检出 ")
new file mode 160000
index 0000000..4c4c5a2
Run Code Online (Sandbox Code Playgroud)
所以它不是检查"最新"版本,而是检查特定的SHA1,并且它是在DETACHED HEAD模式下执行的(请参阅" 如何使具有分离的子模块HEAD附加到实际HEAD? ").
这并不意味着你无法更新子模块,正如我在" 子模块的真实性质 "中所解释的那样.
欲了解更多关于子模块,以及潜在为什么你可能不希望使用他们(!),请阅读文章发人深省" 为什么你的公司不应该使用Git的子模块 ",从琥珀Yust(也对SO).
只是一个小提取物,用于踢腿和咯咯笑(强调我的):
当您调用
git submodule update它时,在父存储库中查找每个子模块的SHA,进入这些子模块,并检出相应的SHA.
如果您在常规存储库中检出SHA,则会将子模块置于分离的HEAD状态.如果您随后在子模块中进行更改并提交,那么Git将很乐意创建提交...并让您仍然使用分离的HEAD.看看这是怎么回事?
假设您合并了一些恰好包含另一个子模块更新的更改.如果您尚未将自己的子模块更改提交到父项目中,Git将不会将子模块中的新提交视为冲突,如果您运行
git submodule update它将很乐意在没有警告的情况下清除您的提交,将其替换为你刚刚合并的分支.我希望您的子模块已
reflog启用或者在终端回滚中仍然有旧提交,因为否则,您只是丢失了所做的所有工作.
呃..."哎哟".
请注意,现在子模块可以跟踪分支中的最新信息:请参阅" git submodule tracking latest ".
| 归档时间: |
|
| 查看次数: |
11477 次 |
| 最近记录: |