小智 27

我自己找不到答案,所以我创建了一个自定义动作.转到首选项,自定义操作,然后输入以下信息:(这是在Mac上.您的git可执行文件的路径可能会有所不同.) git子模块更新自定义操作

  • 您也可以使用"子模块更新--init --recursive".如果已经完成初始化,则添加"--init"是无害的,如果你刚刚克隆了带子模块的repo,则可能是必要的.如果你没有引用其他子模块的子模块,"--recursive"是无害的,如果你这样做则必不可少. (3认同)

Ray*_*non 16

只需双击子模块或左键单击即可打开模块 在此输入图像描述

一旦进入子模块,UI就像任何git repo,按下pull/fetch更新到标题.瞧.

  • 这正是我所寻找的,它也在[文档]中描述(https://blog.sourcetreeapp.com/2012/02/01/using-submodules-and-subrepositories/).*"如果要在存储库中使用的子模块中有新的更改,您所要做的就是打开子模块(双击)并通过pull,merge或者手动检查/更新到另一个提交检查提交...一旦完成此操作,返回到父存储库,您将在子模块上看到未提交的更改,该更改将在差异中显示跟踪提交中的更改:"* (3认同)
  • `git submodule update`的目标是切换到父repo*中指定的*版本.(这对于只想使用推荐的子模块的消费者来说是好事.)另一方面,拉动将从上游存储库中带来*最新版本*.(如果您想处理子模块,或者如果您想使用最新版本,无论父repo指定哪个版本,这都会更好.) (3认同)
  • 您确定这会执行`git submodule update`吗?无论如何,我都不喜欢“ git fetch”或“ git pull”(因为它们会忽略包含存储库所指示的修订版。) (2认同)
  • 如果你问我,这将检查最新版本,而不是检查主回购中提交的提交. (2认同)

Con*_*ong 8

我使用的是源码树 v3.4.6,您可以通过菜单Tools\Options启用它 在此输入图像描述

克隆时,应启用Recurse 子模块 在此输入图像描述


小智 7

Isuru 提供的链接确实包含如何执行更新(查找“更改存储库正在跟踪的子模块提交”

简而言之,在主存储库上,

  • 选择子模块下拉列表
  • 双击您想要更新的子模块 - 您会将焦点切换到该子模块
  • 拉取(最新)或签出(特定提交)所需的更新
  • 返回主存储库的选项卡
  • 主存储库中将有未提交的更改(提交使用哪个子模块)
  • 提交并推动更改


dtm*_*and 5

这是版本:

在此处输入图片说明

此命令假定您的位置sh.exe-根据您设置SourceTree的方式,它可能位于其他位置。

/c %LOCALAPPDATA%\Atlassian\SourceTree\git_local\bin\sh.exe --login -i -c "git submodule update"""
Run Code Online (Sandbox Code Playgroud)

不确定是否是错误-但是在我正在使用的Sourcetree版本(v1.6.14.0)中,我发现""需要在末尾使用多余的一对引号-否则存在多余的引号,并且不平衡的语句会导致sh大叫:

cmd "/c %LOCALAPPDATA%\Atlassian\SourceTree\git_local\bin\sh.exe --login -i -c "git submodule update""
sh: unexpected EOF while looking for matching `"'
sh: syntax error: unexpected end of file

Completed with errors, see above.
Run Code Online (Sandbox Code Playgroud)