我要做的是拥有一个名为'lib'的根目录的主仓库,其中有两个子目录'js'和'html'。在基于'lib'创建本地/ dev分支时,我需要拉出主'html'目录,但在该目录中我需要最新的'js'目录。
Fyi,'html'包含各种项目的几个模板,'js'包含我们自己的Javascript库,但也包含第三方:jquery,YUI,Cufon等。理想情况下我想尽可能从第三方回购中获取,尽管我暂时没有那个生活。
就我而言,'js'应该与'html'分开,因为它与其他与'html'目录无关的项目使用,但基于'html'模板的项目总是需要'js'
所以我的问题:
我read about submodules in this SO question和sparse checkouts,但我不明白其中任何一个可以实现上述目标 - 除非我克隆'/ lib'和稀疏结帐'/ lib / html /例如,template1 /'然后在'/ lib / html / template1 / js /'里面克隆相同的repo和稀疏checkout'/ lib / js'。在这种情况下我的第二个问题:
当在本地分支上完成工作时,我们将与dev分支合并。项目完成后,我们将dev与master合并。所以第三个问题:
概述拟议工作流程的图表:
我很高兴被告知我的概念有所偏差,但如果是这样,请帮助我解释原因,以及如何实现上述目标。我绝对不是Git专业人士,我正在尝试与Git合作。
答案 0 :(得分:1)
注意:子模块可以在您需要的任何分支中签出:您可以在父仓库中的分支A
中,在子模块中分支B
,父仓库不会关心。所有父repo记录都是子模块repo的提交SHA1。
我真的建议不使用稀疏结帐,但是:
lib
,js
和html
)js
和html
链接为lib
repo html
和js
的符号链接。换句话说:
lib
,并初始化您的html
和js
repo,它们没有为您提供预期的目录结构(您甚至没有html
或lib中的js
个目录,因为你没有更新你的子模块。)html
和js
repos lib
cloned repo lib/html
是html
克隆回购的符号链接lib/html/js
是js
克隆回购的符号链接为了让您的父级仓库lib
(已初始化但未更新子模块)检测两个子模块的更改,您还可以将lib
仓库中的符号链接添加到两个单独的{{1 }和html
克隆回购
这样,您可以使用新更新的两个子模块提交js
repo。
但是,您当前的所有开发都是根据您的预期组织的非git目录结构进行的。