如何从一个大的Git树中分离出一个小库

时间:2013-12-04 12:44:44

标签: git

在一个大型项目中有一个小型图书馆(在git仓库中),我认为可以从这个大项目中考虑出来,因此只需要小型图书馆的人就会受益。

小型库是大项目中的子目录。

最好的方法是什么?具体来说,我问如何失去与父项目的联系,所以我可以:

  1. 保留历史
  2. 受益于上游改进,
  3. 为上游改进做出贡献,
  4. (当然,仍然可以做很少的改变,我需要将库从大项目的结构中分解出来)
  5. 我正在考虑分叉,然后使用git移动和删除项目,但我不确定它是否会保留与父项目的足够联系。

2 个答案:

答案 0 :(得分:3)

  

分叉,然后使用git移动和删除项目,但我不确定它是否会保留与父项目的足够联系。

完成后,您仍需要在大型项目仓库中将新的仓库(对于小型库)声明为 submodule (请参阅git submodule )。

这样,您将对该库库的特定版本保持准确的引用,并且仍然可以从该库中进行贡献(请参阅“true nature of submodules”)。

答案 1 :(得分:3)

使用git子树,您可以:

  1. 保留历史记录 - >是的,无论是upstreem还是子树repo
  2. 受益于上游改进 - >是的,git subtree pull
  3. 有助于上游改进 - >是的,git subree push
  4. 与上游有一些不同 - >可以,使用与上游的分支同步和另一个分支用于其他用途
  5. 比子模块好,你的上游将保持与以前相同,没有任何改变。