我已经阅读了很多有关git子模块和子树的问题(其中很多涉及git的旧版本),令我感到困惑的是什么最适合我的用例。
我用LaTeX排版课程资料等等。我有这样的目录结构
./courses/courseA/someCourse.tex
./exercises/someTheme/document.tex
./includes/latex/mymacros.sty
我想将我的宏作为公共git存储库发布在./includes
下,而其余的存储在私有git存储库中。
当前,上述结构的根部有一个主要的私有存储库,其中包含include存储库作为子模块。
一切正常,除了当我的include发生更改时我进行递归拉动时。子模块将提取特定的提交而不是分支,因此,我的包含存储库位于分离的头中。
我知道这是有原因的:主存储库的提交必须表示内容明确,因此子模块的状态准确。但是,我发现它每天都很烦人,因为我可能会对自己的包含项进行一些编辑,并且必须回溯以提交它们。
所以子模块也许不合适吗?我缺乏对子树的理解;尤其是我担心,很难将我的主要回购信息传播到公众场合,包括回购信息(例如,通过无法访问我的私人回购信息的人的PR)。
在我的情况下可以使用子树吗? 是否可以通过某种方式强迫我当前存在的子模块按照我的意图进行操作(即,在执行主仓库时提取并快速转发到其源/主服务器)?
我正在使用git版本2.17.1。