Git使用-多仓库管理之submodule

2024/05/22 | 字数762 | 阅读2分钟


除了美国一些大的科技公司,例如Google、Facebook、Netflix等在使用单一大仓库的方式来管理代码,很多中小科技企业更喜欢用多个仓库分项目存放代码,这样有很多好处,例如:下载代码快,目录干净无干扰,别的项目提交代码,不影响你的项目等等。当然,事物都有两面性,多仓库也有问题,例如:你的项目依赖另外一个项目的代码,要如何管理这些依赖关系以及版本信息,今天我们介绍一种git原生提供的方案:submodule。

添加依赖库

bash
1
2
3
4
5
6
7
8
9
## 在一个已有项目中,添加一个外部依赖
git clone ssh://your-repo-url/your-project.git
cd your-project/
git submodule add ssh://your-repo-url/other-project.git

## 保存修改
git add .
git commit -m "add deps other-project"
git push 

这样就添加了一个外部依赖库,使用的是主线最新版本的代码,同时记录了这个版本对应的SHA1值,可以使用下面的命令查看对应的SHA1值信息:

bash
1
2
3
4
5
git ls-tree HEAD

100644 blob 0e8d85c03d6c7778e21b34257b63b0572ffd9733	.gitmodules
100644 blob 94db5091e9cb23c1562896c8810da7cb475119a4	README.md
160000 commit 429ee5dfdabc0eef3e9b3b7dd853b5fe22e66140	liba

上面命令输出中最后一行429ee5dfdabc0eef3e9b3b7dd853b5fe22e66140就是外部依赖liba对应的版本SHA1值。

修改依赖库版本

上面的命令默认下载了最新的依赖库代码,但是如果你想要依赖一个特定的版本,例如:v1.0,要怎么处理?

bash
1
2
3
4
5
6
cd other-project/
git checkout v1.0
cd ..
git add .
git commit -m "depend on other-project v1.0"
git push 

修改依赖库代码

是的,你还可以直接修改依赖库的代码,然后提交到远端仓库,不过这里需要两步操作:

bash
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
cd other-project/

## STEP.1 先提交依赖库代码
## coding ...
git add .
git commit -m "fix: a bug for my-project"
git push 

## STEP.2 再提交自己项目仓库的依赖信息
cd ../
git add .
git commit -m "modify other-project code"
git push
上一篇:Git使用-如何兼顾日常开发和紧急问题修复 下一篇:Git使用-多仓库管理之repo

【文章不错,鼓励一下】