git子模块更新只需要最初?

我得到了一堆git submodule(一厢情愿的想法?),我想出了更具体的问题,这是一个好兆头…

我试图找到超级项目所指的子模块的修订版本,在.gitmodules.git/config ,但没有提到那里…
该场景是,我正在改变他们的根地点(从中导入)的子模块,然后把他们拉到他们“submoduled”的地方…
除了从超级项目提交将这些更改合并到超级项目回购,我还需要做“ git update ”注册新的拉入子模块提交?

基本上问题是:

只有当我第一次克隆超级项目,或每次拉动子模块(从它自己的回购)之后,才需要“ git submodule update ”?

谢谢

正如我以前对git submodule update回答中所提到的那样,该命令基于它们的.gitmodules文件.gitmodules项目的特定版本。

GitPro页面确实坚持 :

这是子模块的一个重要点:您将它们记录为它们的确切提交。

您可以看到在“超级项目”(引用一个或多个子模块的那个)中引用哪个提交:

  • git submodule status (除非直接在子模块中做了一些提交,否则在超级项目中存储的SHA-1的任何子模块的HEADSHA-1的前面将显示“ + ”)。要么
  • git ls-files --stage在模式“160000”中查找条目,这是Git索引中的一个特殊条目。

这意味着,每次在“超级项目”中执行git命令(可能会修改该子模块提交SHA1)时,都需要“ git submodule update ”。

只有当我第一次克隆超级项目,或每次拉动子模块(从它自己的回购)之后,才需要“git submodule update”?

是的,每当您在主项目中更改子模块更改时,都必须执行此操作。
那是因为你正在引用子模块原始仓库的确切提交(如上所述),并且当你提取仓库时,你正在有效地修改这个提交。

Interesting Posts