Git subtree: Use only subrepository instead of whole repository

半城伤御伤魂 提交于 2019-12-03 16:52:06

问题


I have a project that uses some 3rd Party libraries. So the directory structure is something like:

MY_COOL_PROJECT
   3rdParty
      LIB_1
      LIB_2
   Source
      MY_PROJECT   

The libraries are located in separate repositories. So, if I want to use a git repository for the 3rd Party libraries I can do:

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

However, inside lib1.git repository there is only one bin folder I need. It contains also folders such as documentation, examples, etc. How can I only "connect" my repository with lib1/bin folder instead of the whole repository? Is that even possible?


回答1:


Normally, a git repo is done to be fully cloned/loaded.

You could go for a sparse checkout (Git1.7+), but only if you don't intent to do any modification and push those back. See 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

The OP user2070238 reports:

This worked with a few changes.
Because, I use submodule I had to use

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

And for some reason the MY_FOLDER/ part was not working without *



来源:https://stackoverflow.com/questions/14864887/git-subtree-use-only-subrepository-instead-of-whole-repository

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!