是个很不错的功能,简单实用。
有需求才会有探索,先说说我是怎么需要这个功能的。
- 有开源项目A,我
git clone
下来了。 - 我想建个项目B,依赖这个项目A,但我并不准备改A的代码,我只想改我的B项目。
- 如果我fork一个A项目,那么作者的A项目更新我就可能落后或错过什么; 如果我不fork,那么我改了B项目代码我又无权push代码到网上,因为这不是A项目的一部分。
- 于是我就想到,如果能这样就好了:A出自一个repository,B出自另一个repository。于是就想到了submodule。
- 果然是。
用法与用量:
以tortoise Git
截图为例:
git clone
A项目,比如得到a文件夹。- 在gitee等处创建一个B项目,知道项目地址。
- 进入a文件夹,选择
Submodule Add
如下图
- 在新弹出的对话框里
clone B
项目,如下图。其中注意绿框处的path,决定了相对路径 。可以自己决定。
- 之后,就可以回到上层,
pull A
,直接取到作者的最新内容。 - 然后可以进入内层,
pull submodule B
或者push
,全权管理自己的代码内容。
上两个图示意下。
完美实现需求。