git只添加某个分支的子模块

时间:2018-02-18 23:03:38

标签: git branch git-submodules

是否可以仅将单个分支签出为子模块,而不会占用主存储库工作目录中整个存储库的开销? (实际上只下载该分支的文件)

我想有一个带有名为“dist”的分支的javascript库的子模块,其中只包含缩小的已编译的即用型js文件。 “master”将包含源文件和一堆其他只需要开发lib的东西。

2 个答案:

答案 0 :(得分:1)

请注意,子模块仅代表固定的SHA1。

话虽如此,在git子模块更新--remote上,您可以通过按照我的回答#34; git submodule tracking latest"

对于现有的子模块:

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

repo可以将自己添加为具有给定分支的子模块 我曾经为gh-pages of a GitHub pages repo这样做。

由于子模块是子仓库,您将下载仓库,并且只检查您需要的分支。
虽然有a --single-branch option to git clone确实将克隆限制为单个分支 您可以尝试使用-bgit submodule add -b abranch)选项再次添加子模块,以检查是否克隆了远程子模块仓库中只有一个分支。
请参阅&#34; Is a full clone the only way to submodule add a branch?&#34;。

答案 1 :(得分:0)

在同一个存储库 MainProjectBranch 中添加子模块分支(Submodule1Branch):-

  

创建子模块的分支(视为存储库):-

  • Master 创建一个分支作为 Submodule1Branch

  • 在本地计算机中克隆 Submodule1Branch ,并删除其中的所有Master,并仅通过给定命令使用 Submodule1Branch 的相应项目进行推送:-

  

将此Submodule1Branch添加为同一仓库中MainProjectBranch的子模块:-

  • 从“ Master”创建一个分支,并将其命名为“ MainProjectBranch”。
  • 在您的本地克隆此分支。
  • 现在通过给定命令在此分支上执行子模块:-
  • git子模块add -b Submodule1Branch https://Your@bitbucket.com/yourmasterporject.git 子模块/
  • git状态
  • cat .gitmodules
  • git add。
  • git commit -m“已将 Submodule1Branch 添加为 MainProjectBranch 的子模块。”
  • git push

结果:-您可以转到一个位桶或git服务器,然后检查 MainProjectBranch ,在那里您会找到 Submodule1Branch 作为 MainProjectBranch的子模块

  

注意:-您可以对单独的存储库执行与上述步骤相同的步骤   好。(例如:-子模块仓库和主项目仓库将有所不同   会有所不同)。编码愉快!! :)。