如何只更新特定的git子模块?

Cal*_*eng 51 git git-submodules

因此,更新我的所有子模块都是通过运行来完成的

git submodule foreach 'git pull origin master'
Run Code Online (Sandbox Code Playgroud)

如何在不更新任何其他子模块的情况下更新特定的子bundle/syntastic模块?

ant*_*ine 37

我最终通过搜索如何仅更新特定的子模块,这对我来说,更新子模块到其超级仓库指向的ref.这不是问题,也不是答案,而只是标题.

因此,希望能帮助像我这样的其他人,问题标题的答案是:

git submodule update <specific path to submodule>
Run Code Online (Sandbox Code Playgroud)

这将使这个子模块处于超级仓库中提交的ref状态.

  • 这是我一直在寻找的答案,但是(如上所述)这不是OP的答案。也许比我更有权力的人可以将其转化为正确问题的答案(并可能更改该问题的标题以防止混淆)。 (3认同)

mal*_*lat 25

实际上正确的语法是:

$ git clone <remote.git>
$ cd <remote>
$ git submodule update --init -- <specific relative path to submodule>
Run Code Online (Sandbox Code Playgroud)


mic*_*blu 12

如果您刚刚使用子模块克隆了一个repo,则可以使用以下命令克隆特定的子模块:

git submodule update --init submoduleName

这将克隆该子模块的主人,从他们可以cd到子模块并拉出你需要的任何分支.

  • 此命令克隆 repo 引用的子模块的版本,它不会使用其主模块的 HEAD 更新子模块。 (3认同)

mpr*_*net 10

来自git子模块文档

--remote此选项仅对更新命令有效.不使用超级项目记录的SHA-1来更新子模块,而是使用子模块的远程跟踪分支的状态.使用的遥控器是分支的远程(branch..remote),默认为原点.

为了更新特定的子模块,您可以使用:

git submodule update --remote <path to the submodule>
Run Code Online (Sandbox Code Playgroud)

在你的情况下,它应该是:

git submodule update --remote bundle/syntastic
Run Code Online (Sandbox Code Playgroud)