|
submodule就是在你的git里面记录一下你引用到的其他模块的信息。
over。。。。
啥,这就over了。
对,木有错。就那么简单。
本质上和你手动copy一个reposit过来到你的工程目录,再拿个小本本记下来这个reposit是从哪里偷来的,木有啥区别。
只是,大家用多了发现这样不方便,于是就,给git一个submodule的命令。来便于操作。
以上虽然有很多的胡扯部分,但是本质就是那样。下面分几点说明
主代码库与子代码库是相互独立的
你的工程和你submodule,没有啥关系。你只是用到人家的代码而已,为了便于管理git集成submodule命令,这个命令完全可以用其他方式(比如脚本)来代替。
submodule就一个git项目,该怎么更新同步就怎么更新同步,别老想着从你的工程去管理别人的submodule,考虑问题的思路就不对。
(我需要从linux内核项目来敲命令跟新Apache项目吗?????,需要吗???,我有可能2个都用啊)
虽然;
1. submodule的仓库也是在你工程的.git/modules的文件夹下面
2. 提供submodule这个便捷的命令
主代码库引用的是子代码库的提交(commit)而不是分支(branch)
你项目建立的时候一定只是引用某个版本的submodule(对应到commit),而不是某个分支。所以默认都是detached from XXXXX(commit id);
因为,很可能人家提供submodule的人,过几天提交的文件会导致你当前工程完全不可用。。。。
手工维护子代码库
上面默认的是最普遍的方式,但是也可能你的submodule就是自己维护的,可控!
那么这几个命令完全可以搞定(记不住木有关系,大不了多敲几行普通命令而已,俺就最头痛记命令)
(note:从overflow上面偷来的)
# add submodule to track master branch
git submodule add -b master [URL to Git repo];
# update your submodule
git submodule update --remote
参考:
git submodule的使用
Git Submodule使用完整教程 |