git submodule

Git子模块允许你将一个Git仓库作为另一个仓库的子目录。

git submodule add [path]

一般来讲,我们会将子模块添加到path为thirdparty子目录下的某个位置

进行上述操作后,可以看到.gitmodules的配置信息已经得到了相应的更新:

[submodule "thirdparty/googletest"]
    path = thirdparty/googletest
    url = https://github.com/abseil/googletest

需要注意的是,当你不在子模块的目录时,git将不记录子模块的具体内容,而只是记录子模块的对应提交(HEAD/CommitSHA)

在子模块目录下的工作和正常git一致:

git checkout -b 
edit file
git add
git commit
git push

如果在父项目的工作需要修改子模块,记得先提交子模块的改动,再提交父项目的改动。
否则,别人在你的两个父子提交之间拉取改动的时候,会得到父项目中指向子项目的指针已经更新,但是实际上对应子项目的改动并不在服务器上存在!

更新子模块
在子模块目录下,更新获得最新的头指针

git merge origin/master

在父目录,更新子目录的文件内容

git submodule update

你可能感兴趣的:(git submodule)