git:如何签出特定子模块上的特定(最新)版本(使用git子模块…)
所以我有一个回购协议,里面有一堆子模块。我只想更新其中一个,但我想更新到最新的提交,我知道它位于名为origin/mybranch的分支的顶端。我要更新的子模块是mysubmodule(例如) 首先,我尝试了这个:git:如何签出特定子模块上的特定(最新)版本(使用git子模块…),git,git-submodules,Git,Git Submodules,所以我有一个回购协议,里面有一堆子模块。我只想更新其中一个,但我想更新到最新的提交,我知道它位于名为origin/mybranch的分支的顶端。我要更新的子模块是mysubmodule(例如) 首先,我尝试了这个: git submodule update --remote -- mysubmodule 这是一个灾难,因为它似乎签出了最新的origin/master分支(已经很旧了) 所以我读了一些git文档,这似乎是默认行为-足够公平 但是如何签出具有分支来源/mybranch的远程提交
git submodule update --remote -- mysubmodule
这是一个灾难,因为它似乎签出了最新的origin/master分支(已经很旧了)
所以我读了一些git文档,这似乎是默认行为-足够公平
但是如何签出具有分支来源/mybranch的远程提交
我试过这样的方法:
git submodule update --remote --checkout mybranch -- mysubmodule
git submodule update --remote --checkout origin/mybranch -- mysubmodule
但是我还没有弄明白这一点:(您可以为您的子模块设置
分支
选项,以便跟踪您希望更新到的子模块分支。这意味着.gitmodules
文件中的更改
git config -f .gitmodules submodule.<path>.branch <branch>
设置好后,下次运行子模块更新--remote…,在子模块中,git将签出分支指向的提交(分支上的最新提交)。这可以在添加子模块时设置:
git submodule add -b <branch> <repository> [<path>]
git子模块添加-b[]
试试cd-mysubmodule;git-checkout-origin/mybranch
@ElpieKay啊,我很抱歉想用git-sumbodule…
来做这件事。我知道我可以将cd放入子模块并执行正常的git命令:)git子模块
没有这样的命令。如果你能直接将cd
放入dir并在那里运行git
,为什么要这样做呢?@NilsWerner我正在运行一个批处理函数,在每个项目的顶层运行一个命令。所以我想要一个命令,可以从项目的顶层更新我的子模块。。。这就是为什么它应该。。就为了我:)。。。但如果这不可能,那么这是一个完全有效的假设answer@code_fodder由于在脚本中使用cd不是一种好的做法,因此可以从项目的顶层使用git--git dir=mysubmodule/.git checkout origin/mybranch
。
git submodule add -b <branch> <repository> [<path>]