git中submodule的使用

最近想要好好整理一下个人blog,由于众所周知的原因,国内访问github非常的不稳定,而我的博客还是使用的github托管配合vercel的部署。所以想到一个比较理想的方法,就是将post目录使用gitsubmodule子模块管理,将post文章的这块托管在国内的gitee上。所以这也是一篇关于git submodule的简短教程。

1.添加子模块

1
git submodule add <url> <repo_name>

这就是添加子模块的形式。在我的例子中,也就是使用如下命令:

1
git submodule add https://gitee.com/***/***_blog.git source

使用这个命令添加之后,运行git status,可以看到主仓库目录中会增加一个.gitmodules文件和子模块名称。

PixPin_2025-11-12_16-51-37

使用git add命令commit之后,主项目中也就成功条件了子仓库。

2.查看子模块

1
git submodule

3.更新子模块

更新项目内子模块到最新版本:

1
git submodule update

更新子模块为远程项目中的最新版本

1
git submodule updaye --remote

4.删除子模块

删除子模块比较麻烦,需要手动删除文件,大概分为4步。

  1. 删除子模块文件夹

    1
    2
    git rm --cached source
    rm -rf source
  2. 删除.gitmodules文件中的子模块信息

    1
    2
    3
    [submodule "source"]
    url = "****"
    path = source
  3. 删除.git/config中的相关子模块信息

    1
    2
    3
    [submodule "source"]
    url = "***"
    active = true
  4. 删除.git文件夹中的相关子模块文件

    1
    rm -rf .git/modules/source

5.Clone包含子模块的项目

对于主仓库项目来说,如果只是 git clone 去下载主仓库的内容,那么你会发现子模块仓库的文件夹内是空的!这个时候推荐使用如下命令来一次clone所有的子项目代码。

1
git clone --recursive <project url>

也可以通过普通的clone命令下载代码之后,使用如下命令来递归初始化并下载子模块仓库内容。

1
git submodule update --init --recursive

也可以分初始化和更新子模块两步走的方式来下载子模块仓库的内容

1
2
git submodule init		# 初始化子模块
git submodule update # 更新子模块

git中submodule的使用
http://example.com/2025/11/12/git_submodule_brief/
发布于
2025年11月12日
许可协议