Windows git CLI如何执行同时更新所有子模块的签出?

Windows git CLI如何执行同时更新所有子模块的签出?,windows,git,git-submodules,Windows,Git,Git Submodules,因此,我可以克隆一个分支并使用以下命令获取所有子模块: git clone <url> -b myBranch --recursive 这更新了项目的顶层,但没有更新子模块(我在这里没有看到递归选项)。事实上,我得到的一个输出表明它知道子模块需要更新,但我只是不知道如何做这部分: c:\dev> git checkout myBranch2 M SubModule1 M SubModule2 Branch myBranch2 set up to t

因此,我可以克隆一个分支并使用以下命令获取所有子模块:

git clone <url> -b myBranch --recursive
这更新了项目的顶层,但没有更新子模块(我在这里没有看到递归选项)。事实上,我得到的一个输出表明它知道子模块需要更新,但我只是不知道如何做这部分:

c:\dev> git checkout myBranch2
M        SubModule1
M        SubModule2
Branch myBranch2 set up to track remote branch myBranch2 from origin.
Switched to a new branch 'myBranch2'
然后我检查了子模块1的版本,它仍然指向最初签出的版本(最新版本),而不是它应该指向的版本(大约3个签入旧版本),该版本与分支myBranch2关联


当然,我可以克隆一个新的,并且两者都有——这是我通常会做的,但是我不知道如何做,这让我很烦。。。而且它可能很有用。

git签出之后运行

git submodule update --checkout --recursive
从文件:

git子模块更新…

更新注册的子模块以匹配超级项目 通过克隆缺少的子模块并更新 子模块。“更新”可以通过多种方式完成,具体取决于 命令行选项和子模块的值..更新
配置变量。支持的更新过程包括:

  • 签出-超级项目中记录的提交将在分离的
    头上的子模块中签出。这是在
    
    --签出
    已给出选项,或未给出选项,以及
    submodule..update
    未设置,或者设置为
    checkout

--递归的

此选项仅对
foreach
update
status
sync
有效 命令。递归地遍历子模块。执行该操作 不仅在当前回购的子模块中,而且在任何嵌套的 这些子模块中的子模块(等等)


您还可以设置一个,以便自动执行子模块的更新。

看看这是否有帮助,在
git checkout
do
git submodule update--checkout--recursive
@zillani这个问题几乎回答了我的问题。我并没有试图把任何变化拉下来,但我可能已经从这个问题中推断出了如何做到这一点。。。thanks@Leon太好了,这正是我想要的。试过了——成功了。请随意将此作为答案发布。非常感谢。结帐后挂钩的想法太棒了,如果可以的话,我会再次+1你
git submodule update --checkout --recursive