git 子仓库管理
TIP
有一种场景,在我们的主仓库下需要引入其他仓库的,同时要保持双方的独立。此时,我们可以使用 git 提供的 git submodules 方法
场景
我们新建一个场景,有一个主仓库叫做 git-father
/xxx/git-father
├── .git
└── README.md
需要将另一个仓库 git-sub
引入此仓库中
引入子仓库
# 在主仓库 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
相关操作都是读取的此文件的配置。