Git引用外部库的子目录
前言
之前做独立游戏的时候我们是用的SVN进行版本控制的,主要原因当然是除了我的其他所有人之前都没用过Git😂。。。
然后我自己做东西的话都是用Git的。关于Git和SVN之间的党争就不多说啥了,反正都一样用。不过我是发现SVN有个很好用的功能然而Git并不支持。。
正片
其实就是SVN的外链功能,具体来说就是SVN目录的
svn:externals
属性,用处就是在当前目录去引用到另外一个仓库的某个特定目录。
在Google上翻了半天,算是找到了一个能暂时实现类似
svn:externals
的效果的一个变通方法吧(当然只是能用)。
具体做法
1 |
$ git submodule add --name NAME URL submodules/NAME |
-
修改代码库的
.git/modules/刚才新加的模块/config文件,在[core]下面添加一行sparsecheckout = true -
在
.git/modules/刚才新加的模块/info/目录中新建空文件sparse-checkout(没有扩展名),把你在子模块中需要的每个子目录的路径(相对于子模块根目录)加到sparse-checkout里,每个路径一行 -
执行
git submodule update,就会发现/submodules/刚才新加的模块/目录下已经只有刚才配置的路径了
接下来,可以通过软链接的方式把实际的目录引用到我们需要的地方,就可以实现类似Svn外链的效果了,比如说在Windows环境下,使用管理员权限打开cmd,输入:
1 |
cd git仓库的根目录 |
这样的话,就会在lib目录下建立子模块
SUB_MODULE
的
SUB_FOLDER
子目录的符号链接了。
总结
1 |
CoolLibrary |