我正在掌握 git 子模块(一厢情愿的想法?),并且我提出了更具体的问题,这是一个好兆头......
我试图找到超级项目引用的子模块的哪个版本,在.gitmodules
and .git/config
,但那里没有提到任何内容......
这种情况是,我正在更改根位置的子模块(从中导入它们),然后将它们拉到“子模块”的位置...
除了从超级项目承诺将这些更改纳入超级项目存储库之外,我还需要做“git update
" 注册新拉入的子模块提交?
基本上问题是:
我需要“git submodule update
“只有当我第一次克隆超级项目时,或者每次拉出子模块(从它自己的存储库)之后?
谢谢
正如我之前的回答中提到的git submodule update,该命令根据项目的具体版本检查项目.gitmodules
file.
The GitPro 页面确实坚持:
这是子模块的一个重要点:您将它们记录为它们所在的确切提交。
您可以通过在“超级项目”(引用一个或多个子模块的项目)中运行来查看引用了哪个提交:
-
git submodule status
(除非您直接在该子模块中进行了一些提交,在这种情况下它将显示一个“+
“ 在......面前SHA-1
of the HEAD
任何从该模块前进的子模块SHA-1
存储在超级项目中)或
-
git ls-files --stage
寻找模式“160000”的条目,这是 Git 索引中的一个特殊条目。
这意味着,每次您在“超级项目”中执行可以修改该子模块提交 SHA1 的 git 命令时,您都需要一个“git submodule update
".
仅当我第一次克隆超级项目时,或者每次拉动子模块(从其自己的存储库)后,我是否需要“git submodule update”?
是的,每次在主项目中下拉子模块更改时都必须执行此操作。
这是因为您正在引用子模块原始存储库所在的确切提交(如上所述),并且当您拉取该存储库时,您实际上正在修改该提交。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)