Git进阶-拆分仓库

2024/06/05 | 字数634 | 阅读2分钟


背景

我们先来介绍一下背景,通常情况下,公司项目的发展是这样的,先有一个项目A,里面有一个liba的目录,里面是一些基础组件,例如日志库,业务路由系统等。随着公司的发展,又来了一个项目B,也需要这些组件,如果拷贝一份放到B中的话,就会面临如何维护的问题,两边的团队分别维护,还是由一个团队来维护?最好的方式是把这些组件独立出来,放到单独的库中,由单独的人来维护,谁需要,就直接引用它,至于如何引用,可以参考《Git使用-多仓库管理之submodule》。有了这样的背景,接下来我们就看一看如何把一个组件(liba)从一个项目库(project-a)中拆分出来。

拆分

通过下面4步,完成仓库拆分:

bash
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
## STEP.1 为分开的目录创建新仓库,需要在远端服务器上创建

## STEP.2 进入项目A的仓库目录,进行拆分
cd project-a/
git subtree split -P liba -b split_liba

## STEP.3 将拆分后的liba推送到远端服务器
git push <liba-git-url> split_liba:master

## STEP.4 在项目A中删除liba对应的目录,并推送到远端仓库
git commit -m "split liba"
git push

通过上面的4步,我们得到了一个新库liba,同时保留了liba的提交记录。

引用

接下来,我们使用submodule的方式,在项目A中引用liba:

bash
1
2
3
4
5
cd project-a/
git submodule add <liba-git-url>
git add .
git commit -m "submodule liba"
git push
上一篇:Git进阶-删除垃圾大文件 下一篇:Git原理-元数据之谜

【文章不错,鼓励一下】