git子模块更新只需要最初?
我得到了一堆git submodule(一厢情愿的想法?),我想出了更具体的问题,这是一个好兆头…
我试图找到超级项目所指的子模块的修订版本,在.gitmodules
和.git/config
,但没有提到那里…
该场景是,我正在改变他们的根地点(从中导入)的子模块,然后把他们拉到他们“submoduled”的地方…
除了从超级项目提交将这些更改合并到超级项目回购,我还需要做“ git update
”注册新的拉入子模块提交?
基本上问题是:
只有当我第一次克隆超级项目,或每次拉动子模块(从它自己的回购)之后,才需要“
git submodule update
”?
谢谢
正如我以前对git submodule update
回答中所提到的那样,该命令基于它们的.gitmodules
文件.gitmodules
项目的特定版本。
GitPro页面确实坚持 :
这是子模块的一个重要点:您将它们记录为它们的确切提交。
您可以看到在“超级项目”(引用一个或多个子模块的那个)中引用哪个提交:
-
git submodule status
(除非直接在子模块中做了一些提交,否则在超级项目中存储的SHA-1
的任何子模块的HEAD
的SHA-1
的前面将显示“+
”)。要么 -
git ls-files --stage
在模式“160000”中查找条目,这是Git索引中的一个特殊条目。
这意味着,每次在“超级项目”中执行git命令(可能会修改该子模块提交SHA1)时,都需要“ git submodule update
”。
只有当我第一次克隆超级项目,或每次拉动子模块(从它自己的回购)之后,才需要“git submodule update”?
是的,每当您在主项目中更改子模块更改时,都必须执行此操作。
那是因为你正在引用子模块原始仓库的确切提交(如上所述),并且当你提取仓库时,你正在有效地修改这个提交。