【问题标题】:git: How to checkout specific (latest) version on a specific submodule (using git submodule ...)git:如何检查特定子模块上的特定(最新)版本(使用 git submodule ...)
【发布时间】:2018-06-27 08:00:05
【问题描述】:

所以我有一个包含一堆子模块的仓库。我只想更新其中一个,但我想更新到最新的提交,我知道它位于名为 origin/mybranch 的分支的顶端。我要更新的子模块是 mysubmodule(例如)

首先我尝试了这个:

git submodule update --remote -- mysubmodule 

这有点像一场灾难,因为它似乎检查了最新的 origin/master 分支(它已经很老了)。

所以我阅读了一些 git 文档,这似乎是默认行为 - 很公平!

但是如何签出具有分支 origin/mybranch 的远程提交?

我尝试过这样的事情:

git submodule update --remote --checkout mybranch -- mysubmodule 
git submodule update --remote --checkout origin/mybranch -- mysubmodule 

但我还没有设法解决这个问题:(

【问题讨论】:

  • 试试cd mysubmodule;git checkout origin/mybranch
  • @ElpieKay 啊,我很想用git sumbodule ... 来做。我知道我可以 cd 进入子模块并执行正常的 git 命令:)
  • git submodule 没有这样的命令。如果您可以将cd 放入目录并在那里运行git,为什么要这样做?
  • @NilsWerner 我正在运行一个批处理功能,该功能在每个项目的顶层运行一个命令。所以我想要一个可以从项目的顶层更新我的子模块的命令......这就是为什么它应该......只为我:))......但如果它不可能,那么这是一个完全有效的答案
  • @code_fodder 由于在脚本中使用 cd 不是一个好习惯,您可以使用项目顶层的 git --git-dir=mysubmodule/.git checkout origin/mybranch

标签: git git-submodules


【解决方案1】:

您可以为您的子模块设置branch 选项,以便跟踪您想要更新到的子模块分支。这意味着.gitmodules 文件发生了变化。

git config -f .gitmodules submodule.<path>.branch <branch>

例如

git config -f .gitmodules submodule.mysubmodule.branch mybranch

设置完成后,下次运行 git submodule update --remote... 时,git 将在子模块中检查分支指向的提交(分支上的最新提交)。

可以设置添加子模块时向上:

git submodule add -b <branch> <repository> [<path>]

【讨论】:

    猜你喜欢
    • 2012-06-10
    • 1970-01-01
    • 2019-01-21
    • 2013-05-19
    • 2022-12-08
    • 2019-10-09
    • 2014-06-23
    • 1970-01-01
    • 2023-01-30
    相关资源
    最近更新 更多