【发布时间】:2012-10-05 15:15:39
【问题描述】:
如何更新 SourceTree 中的 git 子模块?
【问题讨论】:
标签: git git-gui atlassian-sourcetree
如何更新 SourceTree 中的 git 子模块?
【问题讨论】:
标签: git git-gui atlassian-sourcetree
我自己找不到答案,所以我创建了一个自定义操作。转到首选项、自定义操作,然后输入以下信息: (这是在 Mac 上。您的 git 可执行文件的路径可能会有所不同。)
【讨论】:
只需双击子模块或左键单击并打开模块
一旦进入子模块,UI 就像任何 git repo 一样,按下 pull/fetch 以更新到标题。瞧。
【讨论】:
git submodule update 所做的吗?无论如何,我不喜欢git fetch 或git pull(因为它们会忽略包含存储库指示的修订。)
git submodule update 的目标是切换到 父 repo 中指定的版本。 (这对于只想使用推荐的子模块的消费者来说是件好事。)另一方面,拉取将从上游存储库带来 最新版本。 (如果您想在子模块上工作,或者如果您想使用最新版本而不管父 repo 指定哪个版本,这会更好。)
这里是windows 版本:
此命令假定您的 sh.exe 的位置 - 取决于您如何设置 SourceTree,它可能位于其他位置。
/c %LOCALAPPDATA%\Atlassian\SourceTree\git_local\bin\sh.exe --login -i -c "git submodule update"""
不确定这是否是一个错误 - 但在我使用的 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.
【讨论】:
Isuru 提供的link 确实包括如何执行更新(查找“更改您的存储库正在跟踪的子模块提交”)
简而言之,在主存储库上,
【讨论】: