在git项目中引用另一个git项目
目录
适用场景
各个项目共用一个库,而这个库正在快速迭代更新的过程中。
操作
假设有项目P1、P2,同时共用项目S的代码。
添加remote
在P1项目中添加S项目的remote地址
|
|
引用
在P1项目中引用S项目代码:
|
|
prefix
参数指定存放S项目的路径,建议使用相对于P1项目根目录的相对路径;squash
参数:默认情况下,P1项目会合并S项目本身所有的提交记录,使用该参数可以合并子项目的提交记录为一条;
操作后,在P1项目中会产生一条commit记录。
例如:
|
|
更新
在P1项目中更新引用的S项目的代码
|
|
提交
在P1项目中向S项目提交在P1中进行的更改
|
|
优势和劣势
优势
对于P1项目来说,S项目的代码是透明的,只是一个普通目录,不需要做特殊处理;只需要维护subtree的人在合适的时候将代码同步到S项目即可。
劣势
subtree的这种方式,只使用了分支,对版本不能进行有效的控制。如果S项目更新了代码但与P1项目不兼容,P1项目更新后就可能会出现问题。
如果追求稳定,可以给S项目单独拉出一个版本分支,例如“v1.0”,subtree只使用这个分支即可。