Yasinchan的自留地Yasinchan的自留地
首页
博客
标签
归档
  • 此博客
  • 我
  • Quick Meet
  • Typing
Github
首页
博客
标签
归档
  • 此博客
  • 我
  • Quick Meet
  • Typing
Github
  • git 子仓库管理

git 子仓库管理

提示

有这样一种场景:主仓库下需要引入另一个仓库,同时又要保持两个仓库的独立。这时可以使用 git 提供的 git submodule 功能。

场景

假设我们有一个主仓库 git-father:

/xxx/git-father
├── .git
└── README.md

现在需要将另一个仓库 git-sub 引入到 git-father 中。

引入子仓库

# 在主仓库 git-father 下执行
git submodule add git@github.com:YasinChan/git-sub.git git-sub

执行后,子仓库会被引入到主仓库下,同时会生成一个 .gitmodules 配置文件:

/xxx/git-father
├── .git
├── .gitmodules
├── README.md
└── git-sub

更新子仓库

# 方法一
git submodule foreach git pull origin master
# 方法二
cd git-sub
git pull origin master

克隆一个包含子仓库的仓库

前面说到主仓库和子仓库是互相独立的,所以无论是 push 还是 pull 操作都需要单独执行。也就是说,我们在 clone 主仓库时,并不会同时把子仓库 clone 下来。这种情况下可以这样操作:

# 克隆主仓库
git clone git@github.com:YasinChan/git-father.git

此时目录结构如下:

/xxx/git-father
├── .git
├── .gitmodules
├── README.md
└── git-sub
# git-sub 是一个空的文件夹

接着执行:

git submodule init
# 提示:Submodule 'git-sub' (git@github.com:YasinChan/git-sub.git) registered for path 'git-sub'

再执行:

git submodule update

此时 git-sub 的内容就会被拉取下来。

.gitmodules

这个配置文件记录了项目 URL 与本地目录之间的映射关系。前面提到的所有 git submodule 相关操作,读取的都是这个文件的配置。

最近更新: 2026/4/22 15:47
Contributors: YasinChan