将子树发布到不同的GIT存储库

时间:2013-12-17 23:40:52

标签: git git-submodules git-subtree

我知道GIT中有子树和子模块,但我仍然不确定在我的情况下哪一个是最佳选择。

情况就是这样:

  • 我有一个带有“lib1”和“lib2”的项目,项目和回购已经存在,我不是从头开始
  • 我希望将所有项目保留在同一个GIT仓库中,以便于签入/结账,因为我主要处理该仓库
  • 项目不是开源的,但我想开源“lib2”
  • 我不会单独使用“lib2”,只能在主项目中使用
  • 我不期待对lib2的贡献,所以从它的repo合并它是一个小问题
  • 理想情况下,我希望这对于在这个项目上工作的其他开发人员是透明的(所以当他们提交/推送时,他们不需要知道下面有一个子树)。

因此,我们的想法是能够将“lib2”推向自己的历史,保持项目的其余部分都是私有的。我知道关于这个话题已经有很多问题,但我找不到明确的答案。

1 个答案:

答案 0 :(得分:1)

您可以保留存储库,并使用以下方法导出此库:

git filter-branch --subdirectory-filer lib2

git help filer-branch说:

   --subdirectory-filter <directory>
       Only look at the history which touches the given subdirectory.
       The result will contain that directory (and only that) as its project root.

您项目的开发人员不会注意到任何更改,因为没有任何更改。 - 但是,更新导出的库将需要您运行另一个过滤器分支。