git submodule

2018-11-28  本文已影响0人  Hard模式

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

git submodule add <git-repo> [path]

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

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

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

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

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

git checkout -b <branch-name>
edit file
git add
git commit
git push

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

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

git merge origin/master

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

git submodule update

上一篇下一篇

猜你喜欢

热点阅读