使用单个git存储库而不是子模块管理不同的代码库

时间:2015-01-19 19:13:57

标签: git github chef git-submodules

在阅读有关子模块的this文章之后,它们似乎只存在于您自己的外部git存储库中。但是,我希望子模块只允许您从一个存储库中管理多个单独的提交历史记录。

是否可以拥有非外部git存储库?我想在一个存储库下管理我的所有厨师烹饪书,每个存储库都有单独的提交历史记录,而不需要创建一堆git存储库

编辑:我不认为我清楚了解了我的用例。我的意思是我希望在每个服务器上都有唯一可寻址位置的食谱列表;并不是说我想要个人食谱的子模块。在这种情况下,穆尔的答案非常有效地解决了这个问题。

2 个答案:

答案 0 :(得分:4)

是的,您可以使用orphan分支机构执行此操作。 orphan分支将从新父分支重新开始,因此它不会与任何其他分支共同提交任何提交。

这样,您可以拥有多个分支,每个分支对应于相应菜谱的不同提交历史记录。

所以你需要做的就是:

git checkout --orphan newbranch

来自git checkout man page

  

--orphan <new_branch>

     

创建一个名为<new_branch>的新孤立分支,从<start_point>开始并切换到它。在这个新分支上进行的第一次提交将没有父项,它将成为与所有其他分支和提交完全断开的新历史的根。

FWIW,您可以在存储库之间推送完全不相关的分支,只需要确保分支名称空间不会发生冲突。

因此,例如,如果您有2个现有的cookbook存储库cookbook1cookbook2,请创建一个新的存储库cookbook,将此存储库cookbook添加为远程存储库使用git remote add cookbook url/to/cookbook的现有存储库,现在您可以使用cd cookbook1 && git push cookbook master:cookbook1cd cookbook2 && git push cookbook master:cookbook2

将现有的存储库历史记录推送到此存储库

注意:正如其他人已经指出的那样,为每个食谱设置个人回购更有意义,所以只有在完全符合您的用例时才使用此方法。

答案 1 :(得分:0)

我强烈建议为此使用单独的repos,然后使用Berkshelf将它们组装在一起。