git中submodule的使用
最近想要好好整理一下个人blog,由于众所周知的原因,国内访问github非常的不稳定,而我的博客还是使用的github托管配合vercel的部署。所以想到一个比较理想的方法,就是将post目录使用git的submodule子模块管理,将post文章的这块托管在国内的gitee上。所以这也是一篇关于git submodule的简短教程。
1.添加子模块
1 | |
这就是添加子模块的形式。在我的例子中,也就是使用如下命令:
1 | |
使用这个命令添加之后,运行git status,可以看到主仓库目录中会增加一个.gitmodules文件和子模块名称。

使用git add命令commit之后,主项目中也就成功条件了子仓库。
2.查看子模块
1 | |
3.更新子模块
更新项目内子模块到最新版本:
1 | |
更新子模块为远程项目中的最新版本
1 | |
4.删除子模块
删除子模块比较麻烦,需要手动删除文件,大概分为4步。
删除子模块文件夹
1
2git rm --cached source
rm -rf source删除
.gitmodules文件中的子模块信息1
2
3[submodule "source"]
url = "****"
path = source删除
.git/config中的相关子模块信息1
2
3[submodule "source"]
url = "***"
active = true删除
.git文件夹中的相关子模块文件1
rm -rf .git/modules/source
5.Clone包含子模块的项目
对于主仓库项目来说,如果只是 git clone 去下载主仓库的内容,那么你会发现子模块仓库的文件夹内是空的!这个时候推荐使用如下命令来一次clone所有的子项目代码。
1 | |
也可以通过普通的clone命令下载代码之后,使用如下命令来递归初始化并下载子模块仓库内容。
1 | |
也可以分初始化和更新子模块两步走的方式来下载子模块仓库的内容
1 | |
git中submodule的使用
http://example.com/2025/11/12/git_submodule_brief/