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

use*_*238 16 git git-subtree

我有一个使用一些第三方库的项目.所以目录结构是这样的:

MY_COOL_PROJECT
   3rdParty
      LIB_1
      LIB_2
   Source
      MY_PROJECT   
Run Code Online (Sandbox Code Playgroud)

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

git subtree add --prefix 3rdParty/LIB_1 --squash http://My3rdPartyLibs.com/lib1.git master
Run Code Online (Sandbox Code Playgroud)

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

Von*_*onC 7

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

可以进行稀疏结账(Git1.7 +),但前提是您不打算进行任何修改并将其推回.看这个例子:

$ 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
Run Code Online (Sandbox Code Playgroud)

OP user2070238 报告:

这有一些变化.
因为,我使用的子模块我不得不使用

 echo MY_FOLDER/* >> .git/info/modules/MY_MODULE/sparse-checkout 
Run Code Online (Sandbox Code Playgroud)

由于某种原因,该MY_FOLDER/部分没有工作*

  • 最初的问题是关于“ git子树”的-这个答案覆盖的是稀疏签出...最多解决方案的一半?(甚至没有) (2认同)