重要的事情说三遍 根本不可能除非学校你家开的 根本不可能除非学校你家开的 根本不可能除非学校你家开的
在平时的软件开发过程中常常会有这样的场景,自己负责的某个模块会依赖其他模块或者第三方的library。这时你自己的模块是一个独立的代码仓库,你想要实现这样一种功能,当你从你的模块的代码仓库里把代码拉到本地来的时候,能自动的将你依赖的模块或第三方库都拉到指定的目录当中去。
当然要实现这个功能的方法有很多,比如使用repo之类的工具,又比如如果你使用的是svn作为版本管理工具,那么你可以使用svn的external机制来引用第三方的project。
这里要说的是使用git作为版本管理工具的情况。
二、git submodule
其它的细枝末节就不再赘述了,咱直奔主题。
先来看具体用例:
目前有一个模块A,其代码仓库的地址为:projectA.git, 它需要引用另一个模块B, 其代码仓库的地址为:projectB.git。
假设模块A的本地目录为:projectA
希望引用模块B为模块A的子模块,其在模块A目录下的路径为: projectA/projectB
这里我们通过git 的submodule机制来实现。
比如在命令行里可以直接使用如下命令:
1 2 | cd projectA git submodule add projectB.git projectB |
注: 这个submodule的 子目录指定时不能以 “/”结尾, 比如上面的命令,就不能写成 projectB/ 这个样子。
就这么简单的一句git命令就可以搞定了,当然这还没完,运行完这个命令之后,在projectA目录执行git status命令,可以看到如下的结果: