Git子树:仅使用子存储库而不是整个存储库

时间:2013-02-13 22:57:50

标签: git git-subtree

我有一个使用一些第三方库的项目。 所以目录结构类似于:

MY_COOL_PROJECT
   3rdParty
      LIB_1
      LIB_2
   Source
      MY_PROJECT   

这些库位于不同的存储库中。所以,如果我想为第三方库使用git存储库,我可以这样做:

git subtree add --prefix 3rdParty/LIB_1 --squash http://My3rdPartyLibs.com/lib1.git master

但是,在lib1.git存储库中,我只需要一个bin文件夹。它还包含文档,示例等文件夹。我怎样只能将我的存储库与lib1 / bin文件夹“连接”而不是整个存储库?这甚至可能吗?

1 个答案:

答案 0 :(得分:7)

通常,完成git repo以完全克隆/加载。

可以选择 sparse checkout (Git1.7 +),但前提是你不打算进行任何修改并将其推回去。见this example

$ git init
Initialized empty Git repository in /tmp/si-sandbox/.git/
(master) $ git config core.sparsecheckout true
(master) $ echo message-store/ >> .git/info/sparse-checkout
(master) $ git remote add origin git://github.com/iwein/Spring-Integration-Sandbox.git
(master) $ git pull origin master

OP user2070238 reports

  

这有一些变化   因为,我使用子模块我必须使用

 echo MY_FOLDER/* >> .git/info/modules/MY_MODULE/sparse-checkout 
  

由于某些原因,MY_FOLDER/部分在没有*

的情况下无效